Professional Documents
Culture Documents
87
99
15
En algunas aplicaciones se puede desear recorrer la lista hacia adelante y hacia atrs, o dado un elemento, conocer rpidamente los elementos anterior y siguiente. En esas situaciones se le da a cada nodo sobre una lista un puntero a los nodos siguiente y anterior en la lista tal y como se muestra en la figura.
Borrar un nodo
void borrar (p) { if (p->anterior != NULL) p->anterior->siguiente = p->siguiente; if (p->siguiente != NULL)p->siguiente->anterior = p->anterior; free(p); }
20/03/2013
Ejemplo:
L
Representaciones contiguas
0 1 Campo elementos 1 n-1 a1 a2 Lista ... an ...
Vaco
Escriba funciones C que permitan: 1. Buscar un elemento en la LDE 2. Insertar un nuevo elemento 3. Borrar un elemento existente
-Longitud de la lista
Representaciones Estticas
Creacin de la lista
Lista Siempre es conveniente almacenar el total de elementos de la lista en una variable, y verificar que ste no exceda el mximo de almacenamiento de la lista.
0 1
a1 a2 ...
#define LMAX = 100; /* constante */ typedef struct { int elementos[LMAX]; int n; } Lista;
: :
n-1
an ... Vaco
max-1
--
a 0
b 1
c 2
d 3
e 4
Lista L1; int i=0; for (i=0; i<L1->n; i++){ printf(Ingrese el valor del nodo %d, i); scanf(&L1->elementos[i]); }
int buscar(int L[], int X, int N) { int i=0; int boo=0; do { if (L[i]!=X) i++; else { boo=1; i=N;} } while (i<N); return(boo); }
a 0
b 1 2
d 3
Ejercicio: escriba una funcin que permita eliminar al elemento ubicado en la posicin j de la lista.
20/03/2013
Insertar un dato
Insertar un dato
x 0
a 1
b 2
c 3
d 4
e 5 6
2.- Si existe espacio, 2 espacio se desplazar los valores (desde la posicin de insercin) hacia a la derecha.
Ejercicio: escriba una funcin que permita la insercin cuando sea posible- de un elemento X en la lista.
COMPARACIN DE MTODOS
es mejor usar implementacin de listas enlazadas o de almacenamiento esttico?
Depende del contexto. Depende de las operaciones que se desea llevar a cabo y de su frecuencia. Tambin influye la longitud de la lista.
Ciertas operaciones requieren ms tiempo en unas implementaciones que en otras. Por ej. insertar y borrar aplican un nmero constante de pasos en una lista enlazada, pero necesitan tiempo proporcional al total de nodos en representacin esttica.
La implementacin esttica puede desperdiciar espacio, ya que usa la cantidad mxima de espacio independientemente del nmero de elementos presentes en la lista en un momento dado. La implementacin por punteros usa tanto espacio como necesita para los elementos que hay en la lista, pero necesita espacio adicional para los punteros de cada celda.
20/03/2013
Listas Circulares
87
99
15
2 .
N-1 N1 N-1 0 1 2 3 : :
El recorrido es desde la posicin 0 hasta la posicin i, desde la posicin i contina con la posicin 0.
i+1
20/03/2013
Ejercicio:
Escriba las funciones necesarias para la creacin, insercin y eliminacin de datos en una lista circular esttica que contiene slo valores enteros.
i+1