Gracias!!.
ESTRUCTURA:
Código C++:
Ver original
struct Node { int dada; Node *seguent; Node *anterior; }; Node *a_inici;
METODOS:
Código C++:
Ver original
EstDinDE::EstDinDE() { a_inici=NULL; } void EstDinDE::afegirInici(int e) { Node *p; p=new Node(); p->dada=e; p->seguent=a_inici; p->anterior=NULL; //a_inici->anterior=p; a_inici=p; } void EstDinDE::afegirFinal(int e) { Node *p,*aux; p=new Node(); aux=new Node(); bool inserit=false; if(a_inici==NULL){ p->dada=e; p->seguent=a_inici; p->anterior=NULL; a_inici=p; } else { p=a_inici; p=p->seguent; aux=a_inici; while(!inserit){ if(p!=NULL){ p=p->seguent; aux=aux->seguent; } else{ Node *nou; nou=new Node(); nou->dada=e; nou->seguent=NULL; nou->anterior=aux->seguent; p->seguent=nou; inserit=true; } } } } void EstDinDE::esborrar(int e) { Node *p; p=new Node(); bool trobat=false; trobat=existeix(e); if((p!=NULL)&&trobat) { if(p==a_inici) { a_inici=p->seguent; if(p->seguent != NULL) p->seguent->anterior =NULL; } else if (p->seguent!= NULL) { p->anterior->seguent=p->seguent; p->seguent->anterior=p->anterior; } else { p->anterior->seguent=NULL; } delete p; } } bool EstDinDE::existeix(int e) { Node *p; bool trobat=false; p=a_inici; while((p!=NULL)&&(!trobat)) { if (p->dada==e) trobat=true; p=p->seguent; } return(trobat); } void EstDinDE::llistar() { Node *p; p=a_inici; while(p->anterior) p=p->anterior; while(p) { cout << p->dada <<endl; p=p->seguent; } }