1. Listas
Pilas
Colas
Carlos Rosario
10-1337
2. Las listas son una estructura de datos organizada de
forma secuencial, homogénea y dinámica.
Refiriéndonos a que pueden crecer o decrecer en
tiempo de ejecución según nuestras necesidades.
Tipos de listas:
Densa: la propia estructura determina cual es el
siguiente elemento de la lista. Ejemplo: arrays.
Enlazadas: la posición del siguiente elemento de la
estructura la determina el elemento actual.
3. La lista enlazada es un TDA que nos permite
almacenar datos de una forma organizada,
al igual que los vectores pero, a diferencia
de estos, esta estructura es dinámica, por lo
que no tenemos que saber "a prioridad" los
elementos que puede contener.
En una lista enlazada, cada elemento
apunta al siguiente excepto el último que no
tiene sucesor y el valor del enlace es null.
Por ello los elementos son registros que
contienen el dato a almacenar y un enlace
al siguiente elemento. Los elementos de
una lista, suelen recibir también el nombre
de nodos de la lista.
4. Los operadores básicos de una lista enlazada son:
Insertar: inserta un nodo con dato x en la lista,
pudiendo realizarse esta inserción al principio o final
de la lista o bien en orden.
Eliminar: elimina un nodo de la lista, puede ser
según la posición o por el dato.
Buscar: busca un elemento en la lista.
Localizar: obtiene la posición del nodo en la lista.
Vaciar: borra todos los elementos de la lista
5. Tiene que declararse el tamaño de
la lista.
Exige sobrevaloración.
Consume mucho espacio.
Complejidad computacional de las
operaciones:
Buscar el enésimo, tiempo constante
Visualizar y Buscar, tiempo lineal.
Insertar y Eliminar son costosas.
Insertar o eliminar un elemento exige,
en promedio, desplazar la mitad de los
valores, O(n).
La construcción de una lista o la
eliminación de todos sus elementos
podría exigir un tiempo cuadrático.
6. Cada nodo apunta al siguiente; el ultimo no apunta a
nada.
La lista es un puntero al primer nodo (y al ultimo).
Complejidad computacional de las operaciones:
Visualizar y Buscar, tiempo lineal.
Buscar el enésimo, tiempo lineal.
Eliminar realiza un cambio de apuntadores y una orden nuevo,
O(1).
Usa Buscar anterior cuyo tiempo de ejecución es lineal.
Insertar tras una posición P requiere una llamada a new y dos
maniobras con apuntadores, O(1).
Buscar la posición P podría llevar tiempo lineal.
Un nodo cabecera facilita la inserción y la eliminación al
comienzo de la lista.
7. Cada nodo apunta al siguiente y al anterior.
Duplica el uso de la memoria necesaria para los
punteros.
Duplica el coste de manejo de punteros al
insertar y eliminar.
La eliminación se simplifica.
No es necesario buscar el elemento anterior.
8.
9. Lista de numero de turnos.
Lista de artículos de un almacen.
Lista de personas.
11. Una pila, es una estructura de datos en la que el
último elemento en entrar es el primero en salir, opr
lo que también se denominan estructuras LIFO(Last
In, First Out).
12. Acceso limitado al ultimo elemento insertado.
Operaciones básicas: apilar, desapilar y cima.
Push: insertar la data en el tope de la pila.
Pop: remueve la data del tope de la pila.
Desapilar o cima en una pila vacía es un error en el TDA pila.
Quedarse sin espacio al apilar es un error de implementación.
Cada operación deberá tardar una cantidad constante de tiempo en ejecutarse.
Con independencia del numero de elementos apiladas.
13. Organizador de paquetes.
Pila de cajas de artículos.
Maletero.
14. Invariante:n<>0
Operaciones:crearPila()
Devuelve valor del tipo pila preparado para ser usado y que
contiene un valor de pila vacía.
Esta operación es la misma que la de las listas generales.
Precondiciones:N=0
Poscondiciones:pilacread
15. Una cola es una secuencia de elementos de
un cierto tipo, dispuesto en una
dimension(tipo lineal de datos)
Nuevos elementos se anaden al final de la
cola.
Esta estructura de datos se puede definir
como una lista enlazada con acceso FIFO a la
que sólo se tiene acceso al final de la lista
para meter elementos y al principio de esta
para sacarlos.
18. En una cola de prioridad los
elementos están ordenados
dependiendo de su prioridad, de
tal forma que este disponible (para
las operaciones Frente y Extraer) el
elemento de máxima prioridad.
En caso de igualdad se sigue la
regla FIFO, de dos elementos con
igual prioridad sale primero el que
primero entro.
Esto se puede conseguir bien
insertando ordenadamente y
extrayendo el primer elemento.
19. Tipo: Unidimensional
Invariante: {Inv: N pertenece Z+}
Operaciones:
Cola_Crear x int > vector
Cola_Insertar vector x int x int > vector
Cola_Extraer vector x int > vector
Cola_Hayelementos vector > boolean
Cola_Eliminar vector x int > vector
Cola_llena vector x int > vector
Cola_Vaciar vector x int > vector