Lista doblemente enlazada

13

Click here to load reader

Transcript of Lista doblemente enlazada

Page 1: Lista doblemente enlazada

Listas Doblemente Enlazadas

Page 2: Lista doblemente enlazada

clave

struct moldenodo { int clave; struct moldenodo *izq;struct moldenodo *der;

};

typedef struct moldenodo nodo;typedef nodo *pnodo;

izq der

Page 3: Lista doblemente enlazada

pnodo CreaNodo(int dato){

pnodo pn = NULL;pn = (pnodo) malloc(sizeof(nodo));if ( pn != NULL) {

pn->clave=dato; pn->izq=NULL; pn->der=NULL;

} return(pn);

}

dato

izq der

NULL NULL

Page 4: Lista doblemente enlazada

pnodo InsertarAlInicio(pnodo n){

if(lista==NULL) lista=n;

else if (n != NULL) { n->der=lista; n->izq=NULL; lista = n;

} return (n);

}

lista

dato

NULL NULL

n

Page 5: Lista doblemente enlazada

pnodo InsertarAlInicio(pnodo n){

if(lista==NULL) lista=n;

else if (n != NULL) { n->der=lista; n->izq=NULL; lista = n;

} return (n);

}

lista

dato

NULL NULL

n

Page 6: Lista doblemente enlazada

pnodo InsertarAlInicio(pnodo n){

if(lista==NULL) lista=n;

else if (n != NULL) { n->der=lista; n->izq=NULL; lista = n;

} return (n);

}

dato1 dato2 dato3

dato4

lista

n

Page 7: Lista doblemente enlazada

pnodo InsertarAlInicio(pnodo n){

if(lista==NULL) lista=n;

else if (n != NULL) { n->der=lista; lista->izq=n;n->izq=NULL; lista = n;

} return (n);

}

dato1 dato2 dato3dato4

listan

Page 8: Lista doblemente enlazada

pnodo InsertarAlInicio(pnodo n){

if(lista==NULL) lista=n;

else if (n != NULL) { n->der=lista; lista->izq=n;n->izq=NULL; lista = n;

} return (n);

}

dato1 dato2 dato3dato4

lista n

Page 9: Lista doblemente enlazada

Void DescartarPrimero(void){

pnodo t = lista;if (lista==NULL) {

printf(“La lista esta vacía”); }else{

lista=lista->der;lista->izq=NULL; free(t); printf(“Se borro el primer elemento de la lista”);

}}

lista

Page 10: Lista doblemente enlazada

Void DescartarPrimero(void){

pnodo t = lista;if (lista==NULL) {

printf(“La lista esta vacía”); }else{

lista=lista->der;lista->izq=NULL; free(t); printf(“Se borro el primer elemento de la lista”);

}}

dato1 dato2 dato3dato4

lista t

Page 11: Lista doblemente enlazada

Void DescartarPrimero(void){

pnodo t = lista;if (lista==NULL) {

printf(“La lista esta vacía”); }else{

lista=lista->der;lista->izq=NULL; free(t); printf(“Se borro el primer elemento de la lista”);

}}

dato1 dato2 dato3dato4

listat

Page 12: Lista doblemente enlazada

Void DescartarPrimero(void){

pnodo t = lista;if (lista==NULL) {

printf(“La lista esta vacía”); }else{

lista=lista->der;lista->izq=NULL; free(t); printf(“Se borro el primer elemento de la lista”);

}}

dato1 dato2 dato3

lista

Page 13: Lista doblemente enlazada

Crear la función de buscar un nodo en especial y eliminarlo.

Crear la función de insertar un nodo en una lista.