Escolar Documentos
Profissional Documentos
Cultura Documentos
En toda estructura de datos hay dos operaciones que sobresalen por encima del resto: Insertar y
borrar. Estas dos operaciones aparecern en toda estructura de datos, puede que con otro nombre, o
con una funcionalidad ligeramente diferente, pero su filosofa ser la misma, proporcionar unas
operaciones para la construccin de la estructura de datos.
Insertar
La operacin insertar consiste en la introduccin de un nuevo elemento en la lista.
En una lista no ordenada no es necesario mantener ningn orden, por lo tanto la insercin de
elementos se puede realizar en cualquier lugar de la lista, al principio, al final, en una posicin
aleatoria, ...
Generalmente se realiza la insercin de tal forma que la complejidad temporal sea mnima, es decir,
que sea una operacin sencilla para que se realice en el menor tiempo posible. La operacin ms
sencilla depende de la implementacin de la estructura de datos, en unos casos puede ser la insercin
al inicio, en otros la insercin al final y en este caso la insercin la realiza en el segundo nodo de la
lista.
Si tenemos la lista...
Borrar
La operacin borrar consiste en la eliminacin de la lista de un elemento concreto. El elemento a
borrar ser escogido por el programador.
La eliminacin en una lista no conlleva ningn trabajo adicional ms que el propio de la eliminacin del
elemento en s. Para borrar un elemento cualquiera habra que realizar un recorrido secuencial de la
lista hasta encontrar el nodo buscado y una vez localizado reestructurar los punteros para saltarse el
nodo a borrar y as poder eliminarlo.
Vamos a verlo con un ejemplo. Borrado del elemento 76 en la lista anterior:
Paso 1: Localizar el elemento a borrar.
Otras operaciones
A partir de estas dos operaciones bsicas cada lista puede presentar muchas operaciones diferentes,
vamos a comentar algunas de ellas, dejando claro que las dos bsicas que siempre aparecern son las
anteriores.
Tamao: Esta operacin suele informar sobre el nmero de elementos que tiene en ese
instante la lista.
Buscar: Comprueba si existe un determinado elemento en la lista.
Recorrer lista: Recorre toda la lista, realizando una operacin en cada nodo. Por ejemplo,
mostrar el contenido por pantalla.
Una lista doble , doblemente ligada es una coleccin de nodos en la cual cada nodo tiene dos
punteros, uno de ellos apuntando a su predecesor (li) y otro a su sucesor(ld). Por medio de estos
punteros se podr avanzar o retroceder a travs de la lista, segn se tomen las direcciones de uno
u otro puntero.
La estructura de un nodo en una lista doble es la siguiente:
Listas dobles lineales. En este tipo de lista doble, tanto el puntero izquierdo del primer
nodo como el derecho del ltimo nodo apuntan a NIL.
Listas dobles circulares. En este tipo de lista doble, el puntero izquierdo del primer nodo
apunta al ltimo nodo de la lista, y el puntero derecho del ltimo nodo apunta al primer
nodo de la lista.
Debido a que las listas dobles circulares son ms eficientes, los algoritmos que en esta seccin se
traten sern sobre listas dobles circulares.
En la figura siguiente se muestra un ejemplo de una lista doblemente ligada lineal que almacena
nmeros:
En la figura siguiente se muestra un ejemplo de una lista doblemente ligada circular que almacena
nmeros:
Para cada tipo de nodo es importante distinguir los distintos campos puntero para realizar
los recorridos adecuados y evitar confusiones.
Dos nuevos tipos correspondientes a los nodos para cada clase de entidad, que junto con la
informacin propia de la entidad incluye los punteros necesarios para mantener la estructura.
typedef struct NodoTipoA {
TipoA Info;
NodoRelacion *PrimerB;
} NodoTipoA;
TipoNodo tipo;
union {
NodoTipoA a;
NodoTipoB b;
NodoRelacion nr;
} cont;
} NodoMultilista;
Para comenzar partiremos con una implementacion basica de una lista, la cual
ocuparemos para realizar los ejercicios en la clase practica. Como reforzamiento
a lo que se vio en la ayudantia, los metodos basicos que deben de tener estas
implementaciones son:
Insert ( x, p ), insert el elemento x en la posicion p
end (), va a la posicion final de datos.(No necesariamenta la del arreglo).
1
Locate ( x ), retorna la posicion del elemento x.
Retrieve ( p ), retorna el elemento en la posicion p.
Delete ( p ) ,Delete ( x ),Borra la posicion p. Borra el o los elementos x.
Next () ,Next ( p ), Posicion siguiente o posicion siguiente a p. La posicion
siguiente esta dada por el valor de la posicion actual .
MakeNull () , Hace la lista nula, necesario para comenzar nuevamente.
PrintList (), Muestra los valores de la lista.
Adicionalmente pueden agregar los metodos que uds encuentren necesarios por
ejemplo.