Foros del Web » Programación para mayores de 30 ;) » C/C++ »

estructura doblemente encadenada

Estas en el tema de estructura doblemente encadenada en el foro de C/C++ en Foros del Web. Buenas estoy haciendo una lista doblemente encadenada; entiendo su funcionamiento pero no acabo de poder plasmarlo en el codigo. Haber si me podeis aconsegar de ...
  #1 (permalink)  
Antiguo 13/05/2011, 15:58
Avatar de mihina  
Fecha de Ingreso: mayo-2010
Ubicación: Girona
Mensajes: 32
Antigüedad: 13 años, 11 meses
Puntos: 1
Pregunta estructura doblemente encadenada

Buenas estoy haciendo una lista doblemente encadenada; entiendo su funcionamiento pero no acabo de poder plasmarlo en el codigo. Haber si me podeis aconsegar de como hacerlo.

Gracias!!.

ESTRUCTURA:

Código C++:
Ver original
  1. struct Node {
  2.             int dada;
  3.             Node *seguent;
  4.             Node *anterior;
  5.  
  6.         };
  7.         Node *a_inici;


METODOS:
Código C++:
Ver original
  1. EstDinDE::EstDinDE()
  2. {
  3.     a_inici=NULL;
  4. }
  5.  
  6. void EstDinDE::afegirInici(int e)
  7. {
  8.     Node *p;
  9.     p=new Node();
  10.     p->dada=e;
  11.     p->seguent=a_inici;
  12.     p->anterior=NULL;
  13.     //a_inici->anterior=p;
  14.     a_inici=p;
  15. }
  16.  
  17. void EstDinDE::afegirFinal(int e)
  18. {
  19.     Node *p,*aux;
  20.     p=new Node();
  21.     aux=new Node();
  22.     bool inserit=false;
  23.  
  24.     if(a_inici==NULL){
  25.         p->dada=e;
  26.         p->seguent=a_inici;
  27.         p->anterior=NULL;
  28.         a_inici=p;
  29.     }
  30.     else {
  31.         p=a_inici;
  32.         p=p->seguent;
  33.         aux=a_inici;
  34.         while(!inserit){
  35.             if(p!=NULL){
  36.                 p=p->seguent;
  37.                 aux=aux->seguent;
  38.             }
  39.             else{
  40.                 Node *nou;
  41.                 nou=new Node();
  42.  
  43.                 nou->dada=e;
  44.                 nou->seguent=NULL;
  45.                 nou->anterior=aux->seguent;
  46.                 p->seguent=nou;
  47.  
  48.                 inserit=true;
  49.             }
  50.         }
  51.     }
  52. }
  53.  
  54. void EstDinDE::esborrar(int e)
  55. {
  56.     Node *p;
  57.     p=new Node();
  58.  
  59.     bool trobat=false;
  60.  
  61.     trobat=existeix(e);
  62.    
  63.     if((p!=NULL)&&trobat)
  64.     {
  65.         if(p==a_inici)
  66.         {
  67.             a_inici=p->seguent;
  68.             if(p->seguent != NULL)
  69.                 p->seguent->anterior =NULL;
  70.         }
  71.         else if  (p->seguent!= NULL)
  72.         {
  73.             p->anterior->seguent=p->seguent;
  74.             p->seguent->anterior=p->anterior;
  75.         }
  76.         else {
  77.             p->anterior->seguent=NULL;
  78.         }
  79.         delete p;
  80.     }
  81. }
  82.  
  83. bool EstDinDE::existeix(int e)
  84. {
  85.     Node *p;
  86.     bool trobat=false;
  87.     p=a_inici;
  88.  
  89.     while((p!=NULL)&&(!trobat))
  90.     {
  91.         if (p->dada==e) trobat=true;
  92.         p=p->seguent;
  93.     }
  94.     return(trobat);
  95. }
  96.  
  97. void EstDinDE::llistar()
  98. {
  99.     Node *p;
  100.     p=a_inici;
  101.  
  102.     while(p->anterior) p=p->anterior;
  103.     while(p) {
  104.          cout << p->dada <<endl;
  105.          p=p->seguent;
  106.     }
  107. }
  #2 (permalink)  
Antiguo 13/05/2011, 18:58
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: estructura doblemente encadenada

Revisa el codigo de este post:

http://www.forosdelweb.com/f96/orden...bjetos-910510/

Las ultimas dos respuestas sobre todo.
  #3 (permalink)  
Antiguo 15/05/2011, 10:07
Avatar de mihina  
Fecha de Ingreso: mayo-2010
Ubicación: Girona
Mensajes: 32
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: estructura doblemente encadenada

Gracias!!!

Etiquetas: estructura
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:33.