2. Listas
Objetos que se pueden modelar
con la estructura de listas Definición
Consiste en una secuencia de
Lista de invitados nodos, en los que se guardan
campos de datos arbitrarios y una
Lista de bodas o dos referencias (punteros) al
nodo anterior o posterior.
Lista de productos El principal beneficio de las listas
enlazadas respecto a los array
Lista de estudiantes convencionales es que el orden de
los elementos enlazados puede
ser diferente al orden de
almacenamiento en la memoria o
el disco, permitiendo que el
orden de recorrido de la lista sea
diferente al de almacenamiento.
3. Ejemplo de un TAD lista
TAD<LISTA>
Tipo: Unidimensional
{inv: X Pertenece Z+}
Operaciones:
Crear lista: int x > vector
Asignar valor: set vector i = x
4. Lista Doblemente
Enlazada
Requieren mas espacio por
nodos
Relación Entre Sus operaciones resultan mas
costosas
Listas y Ventanas Permiten el acceso a la listas en
ambas vías
Permiten la organización de
elementos en un orden
Permiten acceder a
cualquier elemento en el
orden en que se desea
Tienen links(Punteros) que
permiten el acceso a otros Lista vector
elementos del mismo tipo
seleccionado Son listas en las cuales
conocemos el numero de
elementos previamente a la
creación de la lista
Contienen elementos del mismo
tipo
5. Implementación en los
lenguajes
En muchos lenguajes de
programación, estas listas están
construidas por nodos, cada uno llamado
CONS o celda CONS. Las celdas CONS
tienen dos campos: el car, una referencia
del dato al nodo, y el CDR, una
referencia al siguiente nodo. Aunque las
celdas CONS pueden ser usadas para
construir otras estructuras de datos, este
es su principal objetivo.
6. Pila
Definición Operaciones
Una pila (stack en inglés) Para el manejo de los datos se cuenta
con dos operaciones básicas: apilar
es una lista ordinal o (push), que coloca un objeto en la
estructura de datos en la pila, y su operación inversa, retirar (o
desapilar, pop), que retira el último
que el modo de acceso a elemento apilado.
sus elementos es de tipo En cada momento sólo se tiene acceso
LIFO (del inglés Last In a la parte superior de la pila, es
decir, al último objeto apilado
First Out, último en (denominado TOS, Top of Stack en
entrar, primero en salir) inglés). La operación retirar permite la
obtención de este elemento, que es
que permite almacenar y retirado de la pila permitiendo el
recuperar datos en forma acceso al siguiente (apilado con
anterioridad), que pasa a ser el nuevo
secuencial TOS.
7. Objetos reales que
Pila
simulan pilas
Pila de platos
Implementación de las
Pila de cajas pilas
Pila de libros La biblioteca de plantillas de
C++ estándar proporciona
una "pila" clase templated que
se limita a sólo
apilar/desapilar operaciones.
Java contiene una biblioteca
de la clase Pila que es una
especialización de Vector.
Esto podría ser considerado
como un defecto, porque el
diseño heredado get () de
Vector método LIFO ignora la
limitación de la Pila.
8. TAD Pila
TAD<PILA>
Tipo: Unidimensional
{inv: X y N Pertenece Z+}
Operaciones:
Crear Pila: int N > vector
Asignar valor: set vector i = x
Mover valor: para vector i do:
pop from vectorA: Vector n-n+1
push vectorB: Vectorn-n+1
9. Cola Cola Circular
Una cola es una estructura de
Una cola circular o anillo es una estructura de
datos en la que los elementos están de forma
circular y cada elemento tiene un sucesor y un
datos, caracterizada por ser una predecesor. Los elementos pueden
secuencia de elementos en la que la consultarse, añadirse y eliminarse únicamente
desde la cabeza del anillo que es una posición
operación de inserción push se distinguida. Existen dos operaciones de
realiza por un extremo y la rotaciones, una en cada sentido, de manera
operación de extracción pop por el que la cabeza del anillo pasa a ser el elemento
sucesor, o el predecesor, respectivamente, de
otro. También se le llama estructura la cabeza actual.
FIFO (del inglés First In First
Out), debido a que el primer
elemento en entrar será también el
primero en salir.
Objetos reales que se
pueden representar con una
cola
• Fila de un supermercado
• Cola de impresión
• Fila de automóviles
10. TAD Cola
TAD<COLA>
Tipo: Unidimensional
{inv: X y N Pertenece Z+}
Operaciones:
Crear Pila: int N > vector
Asignar valor: set vector i = x
Mover valor: para vector i do:
pop from vectorA: Vector n-n+1
push vectorB: Vectorn-n+1