Está en la página 1de 55

LISTAS

ESTRUCTURAS DE DATOS 2006

Prof. Ing. M.Sc. Fulbia Torres

UNIDAD II ESTRUCTURAS DE DATOS LISTAS


Definicin. Representacin de Listas. Lista Lineal Simplemente Enlazada. Operaciones TAD LLSE. Implementacin Dinmica. Otras Listas. Ejercicios.
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS
DEFINICIN

Una LISTA es un conjunto ordenado de elementos homogneos, en la que no hay restricciones de acceso, la introduccin y borrado de elementos puede realizarse en cualquier posicin de la misma.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS
DEFINICIN

Cuando hablamos de un conjunto ordenado, nos referimos a la disposicin de sus elementos y no a su valor. Esto es que cada uno de ellos, salvo el primero y el ltimo, tienen un anterior y un siguiente. Por otro lado, al decir que los elementos de la lista son homogneos, queremos decir que son del mismo tipo base, aunque sin establecer ninguna limitacin sobre este tipo. Se trata de una estructura dinmica, ya que su tamao cambia a medida que se aaden y eliminan elementos de la misma.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS
CARACTERSTICAS

La cantidad reservada de almacenamiento para la pila o la cola es fija. Vimos pilas y colas alojadas en arreglos. Problemas al insertar o eliminar elementos. Una representacin secuencial, refleja el orden lgico de los elementos fisicamente almacenados en la lista; el orden fsico y lgico son los mismos.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS
CARACTERSTICAS

Solucin a los problemas de movimiento de los datos que se ha encontrado al utilizar representaciones secuenciales. Con la representacin no secuencial el orden lgico y el orden fsico de los elementos no es necesario que sea el mismo. El orden lgico se representa de tal forma que cada elemento apunta al siguiente elemento, es decir, se encuentran ligados.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


CARACTERSTICAS

Lista

Info

sig

Info

sig

Info

sig

Info

sig

Info

sig

Cada elemento se llama nodo. Se accesa a toda la lista a partir de un apuntador externo llamado Lista que apunta(contiene la direccin de) el primer nodo en la lista. Cada nodo tiene dos secciones: el contenido de datos (Info) y el campo del apuntador (sig). El campo Info(de informacin) contiene el elemento real en la lista. El campo sig(direccin siguiente) contiene la direccin del siguiente nodo en la lista. Tal direccin se conoce como apuntador. El ltimo nodo tiene un apuntador nulo.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


CARACTERSTICAS

Lista

Info

sig

Info

sig

Info

sig

Info

sig

Info

sig

Cada nodo es una estructura de datos de tipo registro. Los nodos enlazados no tienen que estar fisicamente adyacentes. Una lista vaca es aquella que no contiene nodos. Lista=NULL. Para remover un nodo, slo es necesario cambiar el apuntador del nodo previo para que apunte al nodo siguiente. Para insertar un nuevo nodo, slo es necesario cambiar el apuntador del nodo previo para que apunte al nodo nuevo, y el apuntador del nodo nuevo apunte al siguiente.
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


CARACTERSTICAS

Operacionescon listas: Recorrido de la lista. Insercin de un elemento. Borrado de un elemento. Bsqueda de un elemento.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


TAD:LISTAS

Operaciones: CONSTRUCTORAS
Crea una lista vaca. CrearLista: Lista

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


TAD:LISTAS

MODIFICADORAS
Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento al inicio de la lista. InsertarInicio: Lista x tipo_base Lista Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento al final de lista. InsertarFinal: Lista x tipo_base Lista

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


TAD:LISTAS

MODIFICADORAS
Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento en un nodo que sigue al nodo apuntado por p. InsertarDespues: Lista x tipo_base Lista Dada una lista, forma la lista resultante de eliminar el elemento situado al principio de la lista (primer elemento). ElimPrim: Lista Lista

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


TAD:LISTAS

MODIFICADORAS
Dada una lista, forma la lista resultante de eliminar el elemento situado al final de la lista (ltimo elemento). ElimFinal: Lista Lista

Dada una lista, forma la lista resultante de eliminar el nodo que sigue al nodo apuntado por p. ElimDespues: Lista Lista

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


TAD:LISTAS

ANALIZADORAS

Dada una lista, hace el recorrido por la lista mostrando el campo info. RecorrerList: Lista Lista

Dada una lista, devuelve el valor verdadero si la lista est vaca y falso en caso contrario. ListaVacia: Lista lgico

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


TAD:LISTAS

ANALIZADORAS
Dada una lista, devuelve el nmero de elementos de la lista. LongLista: Lista tipo_base

DESTRUCTORA
Destruye la lista retornando toda la memoria ocupada. BorrarLista: Lista

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

DEFINICIN # define NULL 0 struct lista { tipo_base info; lista *prox; };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Con esta definicin de Lista las operaciones asociadas especificadas en el TAD quedaran del siguiente modo: Crea una lista vaca int CrearLista(lista **p) { *p=NULL; };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento al inicio de la lista.
void InsertarInicio(lista **p, tipo_base dato) { lista *n; n=new lista; n->info=dato; n->prox=*p; *p=n; };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento al final de lista.
void InsertarFinal(lista **p, tipo_base dato) { lista *n,*m; m=*p; while(m->prox!=NULL) m=m->prox; n=new lista; n->info=dato; n->prox=NULL; m->prox=n; };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento en un nodo que sigue al nodo apuntado por p.
void InsertarDespues(lista **p,tipo_base dato) {lista *q; if (p==NULL) { cout<<" Evite Insercin"; exit(1); } else { q=new lista; q->info=dato; q->prox=(*p)->prox; (*p)->prox=q; } };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el elemento situado al principio de la lista (primer elemento). void ElimPrim(lista**p) { lista *n; n=*p; *p=(*p)->prox; delete n; };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el elemento situado al final de la lista (ltimo elemento).
void ElimFinal(lista **p) { lista *n,*m; if ((*p)->prox==NULL) { *p=NULL; delete *p; } else n=*p; while(n->prox!=NULL) { m=n;

n=n->prox; }
m->prox=NULL; delete n; };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el nodo que sigue al nodo apuntado por p.
void ElimDespues(lista **p) { lista *q; if (p==NULL) { cout<<" Evite Eliminar"; exit(1); } else { q=(*p)->prox; if (q==NULL) { cout<<" Nodo no existe "; exit(1); } else { (*p)->prox=q->prox; delet (q); } } };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, hace el recorrido por la lista mostrando el campo info. void RecorrerList(lista **p) { lista *q; q=*p; while (q!=NULL) { cout<<q->info<<" "; q=q->prox; } };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, devuelve el valor verdadero si la lista est vaca y falso en caso contrario. int ListaVacia(lista **p) { if (p=NULL); return (1) else return (0); };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, devuelve el nmero de elementos de la lista.


int LongLista(lista **p) { lista *q; int conta=0; q=*p; while (q!=NULL) { conta=conta+1; q=q->prox; } return (conta); };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Destruye la lista retornando toda la memoria ocupada.


void BorrarLista(lista **p) { while((*p)->prox!=0) *p=(*p)->prox; delete *p; }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA

Uno de los problemas que plantea la implementacin dinmica mediante enlace simple es el coste de insertar y borrar nuevos elementos en la lista. En varios casos es necesario recorrerla desde el principio para poder acceder al elemento anterior al dado como parmetro. Adems, tan slo es posible recorrer la lista as enlazada en una sola direccin. Para solucionar ambos problemas se puede utilizar una lista

lineal doblementa enlazada.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


DEFINICIN

Una lista doblemente enlazada es una coleccin de nodos, en la cual cada nodo contiene dos apuntadores uno a su antecesor y otro a su sucesor. Las listas doblemente enlazadas pueden ser lineales, circulares y pueden contener o no un nodo de encabezado. Los nodos de una lista doblemente enlazada contiene tres campos: un campo info que contiene la informacin almacenada en el nodo, y los campos izq y der que contienen apuntadores a nodos en alguno de los dos lados. Ver figura.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


DEFINICIN

Izq info der

Izq info der

Izq info der

Izq info der

info : contiene la informacin almacenada en el nodo. izq y der : contienen apuntadores a nodos en alguno de los dos
lados.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

DEFINICIN # define NULL 0 struct lista { lista *izq; tipo_base info; lista *der; };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Crea una lista vaca int CrearListaD(lista **p) { *p=NULL; }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento al inicio de la lista. void InsertPrincD(lista **p, tipo_base k) { lista *n; n=new lista; n->izq=NULL; n->info=k; n->der=*p; (*p)->izq=n; *p=n; };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento al final de la lista. void InsertUltD(lista **p, tipo_base k) { lista *n,*m; m=*p; while(m->der!=NULL) { m=m->der; } n=new lista; n->info=k; n->der=NULL; m->der=n; n->izq=m; };
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento a la izquierda del nodo apuntado por p. void InsertIzqD(lista **p, tipo_base k) { lista *n,*m,*q; q=*p; n=new lista; n->info=k; n->izq=q->izq; n->der=q; if (q->izq!=NULL) { m=q->izq; m->der=n; } else p=n; q->izq=n; };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista y un valor e, del tipo base, forma una nueva lista al aadir el elemento a la derecha del nodo apuntado por p.
void InsertDerD(lista **p, tipo_base k) { lista *n,*m,*q; q=*p; n=new lista; n->info=k; if (q==NULL) { n->izq=NULL; n->der=NULL; q=n; } else { m=q->der; if (m!=NULL) m->izq=n; n->der=m; n->izq=q; q->der=n; } };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el elemento situado al principio de la lista (primer elemento).

void ElimPrimcD(lista **p) { lista *n; n=*p; *p=(*p)->der; (*p)->izq=NULL; delete n; };


Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el elemento situado al final de la lista (ltimo elemento).

void ElimUltD(lista **p) { lista *n,*m; n=*p; while(n->der!=NULL) { n=n->der; } m=n->izq; m->der=NULL; delete n;

};

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el elemento situado a la derecha del nodo apuntado por p. void ElimDerD(lista**p) { lista *q,*n,*m; q=*p; n=q->der; if (n==NULL) {cout << Evite eliminar; exit(1); } else { q->der=n->der; m=n->der; m->izq=n->izq; delete n;} }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA LINEAL DOBLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista, forma la lista resultante de eliminar el elemento situado a la izquierda del nodo apuntado por p. void ElimIzqD(lista**p) { lista *q,*n,*m; q=*p; n=q->izq if (n == NULL) {cout << Evite eliminar; exit(1); } else {q->izq=n->izq; m=n->izq; m->der=q; delete n; } }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS CIRCULARES

La lista encadenada circular es una ligera variante de la lista encadenada lineal; se obtiene al considerar el primer nodo de la lista como el sucesor del ltimo nodo, almacenando la direccin del primer elemento en el campo de direccin del ltimo, en lugar de almacenar la direccin nula. Al realizar esta modificacin se genera automticamente un crculo, donde realmente ya no existe ni el primero ni un ltimo elemento.

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS CIRCULARES
CARACTERSTICAS

Es necesario mantener un apuntador general a la estructura (Lista), aunque ya no apunte obligatoriamente al primer elemento. La direccin nula no existe en la lista, excepto cuando la lista est vaca. Si la lista contiene un solo elemento, el campo de direccin apuntar a ese mismo nodo. Como la lista es un crculo, es posible llegar a cualquier nodo de la lista a partir de cualquiera de sus nodos.
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTAS CIRCULARES
CARACTERSTICAS

Ver figura.

Info

sig

Info

sig

Info

sig

Info

sig

Info

sig

Lista Circular Simplemente Enlazada

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

DEFINICIN # define NULL 0 struct ListaCirc { tipo_base info; ListaCirc *prox; };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Crea una lista circular vaca int CrearListaCSE(lista **p) { *p=NULL; }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista circular y un valor e, del tipo base, forma una nueva lista circular al aadir el elemento al iniciar la lista. void InsertarLCSE(ListaCirc **p, int dato) { ListaCirc *q;

q=new ListaCirc; q->info=dato; *p=q; q->prox=*p; }


Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista circular y un valor e, del tipo base, forma una nueva lista circular al aadir el elemento despus del nodo apuntado por p . void InsertarDespLCSE(ListaCirc **p, int dato) { ListaCirc *n,*q; n=*p; q=new ListaCirc; q->info=dato; q->prox=n->prox; n->prox=q; *p=q; }
Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista circular, forma la lista circular resultante de eliminar el nodo que sigue al nodo apuntado por p. void EliminarDespLCSE(ListaCirc **p) { ListaCirc *q; if ((*p)==NULL){ cout<< "Evitar Eliminar"; //exit(1); } else{ q=(*p)->prox; (*p)->prox=q->prox; delete(q); } }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista circular, devuelve el valor verdadero si la lista circular est vaca y falso en caso contrario. int ListaVaciaCSE(lista **p) { if (p=NULL); return (1) else return (0); };

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista circular, hace el recorrido por la lista circular mostrando el campo info.
void ReccorrerListaCircSE (ListaCirc **p) { ListaCirc *q,*z; z=*p; q=z->prox; while (q!=z) { cout<< q->info <<" "; q=q->prox; } cout << q->info <<" "; }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Dada una lista circular, devuelve el nmero de elementos de la lista.


int LongListaCirc (ListaCirc *p) { ListaCirc *r,*q; int cont; cont=0; r=NULL; q=p->prox; while (q!=r) { if(r==NULL) r=q; cont=cont+1; q=q->prox; } return (cont); }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Destruye la lista circular retornando toda la memoria ocupada.


void BorrarListaCSE (ListaCirc **p) { ListaCirc *q; q=*p; q=q->prox; delete (q); }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

LISTA CIRCULAR SIMPLEMENTE ENLAZADA


IMPLEMENTACIN DINMICA

Imprime cada nodo de informacin de la lista circular .


void ImprimirListaCSE(ListaCirc *L1) { ListaCirc *r,*p; r=NULL; p=L1->prox;

while (r!=p) { if (r==NULL) r=p; cout << p->info <<" "; p=p->prox; } }

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Funcin que concatena dos listas circulares simplemente enlazadas. ListaCirc *concatenarCSE(ListaCirc **p, ListaCirc**q) { ListaCirc *n,*m,*r; n=*p; m=*q; if (n==NULL) n=m; else if(m!=NULL) { r=n->prox; n->prox=m->prox; m->prox=r; n=m; } return n; }

GRACIAS POR SU ATENCIN HASTA LA PRXIMA CLASE

Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006