EnglishFrenchGerman Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified

Arboles AVL - Estructura de datos c++


Programa desarrollado en el lenguaje c++, muestra el funcionameinto de la estructura de datos tipo arbol AVL.
aqui les dejamos la parte importante del codigo.

inserta_avl(nodo *&raiz,int dato)
{
nodo *q,*r,*x;
  if(raiz != NULL)
  {
      if(dato < raiz->inf)
      {
         raiz->inserta_avl(raiz -> izq,dato);
         if(cen==1)
         {
          switch(raiz->fe)
          {
            case 1:raiz->fe=0;
                  cen=0;
                  break;
            case 0:raiz->fe=-1;
                 break;
            case -1:q=raiz->izq;
            if(q->fe<=0)
            {
             //rotacion I.I.
             raiz->izq=q->der;
             q->der=raiz;
             raiz->fe=0;
             raiz=q;
            }
            else
            {
             //rotacion I.D.
               r=q->der;
               raiz->izq=r->der;
               r->der=raiz;
               q->der=r->izq;
               r->izq=q;
               if(r->fe==-1)
               {
                  raiz->fe=1;
               }
               else
               {
                 raiz->fe=0;
               }
               if(r->fe==1)
               {
                 q->fe=-1;
               }
               else
               {
                q->fe=0;
               }
               raiz=r;
            }
        raiz->fe=0;
        cen=0;
        break;
      }
    }
  }
  else
  {
   if(dato > raiz->inf)
   {
     raiz->inserta_avl(raiz->der,dato);
     if(cen==1)
     {
        switch(raiz->fe)
        {
           case -1:raiz->fe=0;
                   cen=0;
                   break;
          case 0:raiz->fe=1;
                   break;
          case 1:q=raiz->der;
          if(q->fe>=0)
          {
             //rotacion D.D.
             raiz->der=q->izq;
             q->izq=raiz;
             raiz->fe=0;
             raiz=q;
          }
          else
          {
             //rotacion D.I.
            r=q->izq;
            raiz->der=r->izq;
            r->izq=raiz;
            q->izq=r->der;
            r->der=q;
            if(r->fe==1)
            {
               raiz->fe=-1;
            }
            else
            {
              raiz->fe=0;
            }
            if(r->fe==-1)
            {
              q->fe=1;
            }
            else
            {
              q->fe=0;
            }
            raiz=r;
          }
          raiz->fe=0;
          cen=0;
          break;
        }
     }
   }
      else
      {
        clrscr();
        gotoxy(25,15);cout<<"La clave"<< raiz-> inf<<" ya existe";
       getch();
      }
   }
 }
 else
 {
    raiz=new(nodo);
    raiz->inf=dato;
    raiz->izq=NULL;
    raiz->der=NULL;
    raiz->fe=0;
    cen=1;
 }
return (raiz);
}

Si gustan todo el programa, pueden dejarme un comentario y se los enviare en el tiempo mas corto posible....gracias..!!


0 Responses So Far:

web-xtreme.blogspot.com. Con la tecnología de Blogger.