ED Listas, Pilas y Colas

1,440
-1

Published on

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,440
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

ED Listas, Pilas y Colas

  1. 1. Estructura de Datos
  2. 2. Contenido Estructura de LISTA Estructura PILA Estructura COLA
  3. 3. DefinicionesEs una estructura de datos secuencial.Es una estructura de datos homogénea y dinámica, que va a estar formada poruna secuencia de elementos, donde cada uno de ellos va seguido de otro o deninguno.Homogénea: Todos los elementos que la forman tienen el mismo tipo base.Dinámica: Puede crecer o decrecer en tiempo de ejecución según nuestrasnecesidades. dos listas pueden ser diferentes si:Las listas son secuencias de 0 ó más elementos de un tipo de datos almacenadosen memoria. Son estructuras lineales donde cada elemento de una lista excepto elprimero tiene un único predecesor y cada elemento de la lista excepto el últimotiene sucesor.
  4. 4. Objetos reales
  5. 5. TAD ListaNombre: TAD ListaInvariante: n/aOperaciones:crearLista ()*/Devuelve un valor del tipo pila preparado para ser usado y que contiene un valor de pila vacía. Esta operación es la mismaque la de las listas generales.*/ preCond: N=0 posCond: Lista creadainsertar(crearLista, x pos)*/mediante este método se insertan datos a la lista ya creada. Inserta elemento x en pos*/ preCond: pos ¡= null posCond: insertarLista completado (dato insertado en Lista)Fin():*/Retorna la posición del último elemento, en otras palabras el “fin” de la lista, también se puede considerar con el tamaño dela lista. Sí la lista está vacía retorna una posición invalida que podría ser -1.*/ preCond: n/a posCond: operación finalizadasiguiente(pos)*/con este método se retorna pos + 1, si pos es ≥ a fin(), retorna fin().*/ preCond: pos!=0 posCond: retorna posanterior(pos)*/con este método se retorna pos -1.*/ preCond: pos!=0 posCond: retorna poslimpiar(pos)*/limpia la lista y finaliza fin()*/ preCond: n…n+a, pos =0 posCond: lista vacia…
  6. 6. Relación entre Ventana y Lista Una ventana es un área visual, normalmente de forma rectangular de usuario, mostrando la salida y permitiendo la entrada de datos para uno de varios procesos que se ejecutan simultáneamente. La misma consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior. La relación es que con ambos términos nos referimos a manipulación de datos sin importar el orden de los mismos, solo el acceso y su modificación.
  7. 7. ImplementaciónPara representar en lenguaje C en esta estructura de datos se utilizaránpunteros, un tipo de datos que suministra el lenguaje. Se representará unalista vacía con la constante Null. Se puede definir la lista enlazada de lasiguiente manera:struct lista{ Int clave; Struct lista *sig;};
  8. 8. E1. Vectores Utilizando una estructura de datos estática arreglo para representar e implementar el TAD Listas.Asumamos que los elementos que contiene la lista son representados por el tipo entero. La cantidad deelementos que puede contener la lista tiene un máximo de n elementos. Por lo que la representación formalde este tipo se define de la siguiente manera: tipo Lista= arreglo [1..n] de enteros; Varl:lista; Implementación Procedimiento: Operaciones básicas. Lista_vacia (var L: Lista) Var i: entero; Principio Para i:= 1 hasta n hacer L[i]:=0; Fin; Función es_vacia(l:lista):lógico Principio Si L[1] = 0 entonces es_vacia:= verdad Sino es_vacia:= falso; Fin; Procedimiento insertar (var l:lista, p:
  9. 9. E2. Listas doblemente enlazadasUna lista enlazada es una de las estructuras de datosfundamentales, y puede ser usada para implementar otrasestructuras de datos. Consiste en una secuencia de nodos, en losque se guardan campos de datos arbitrarios y una o dos referencias(punteros) al nodo anterior o posterior.El principal beneficio de las listas enlazadas respecto a los arrayconvencionales es que el orden de los elementos enlazados puedeser diferente al orden de almacenamiento en la memoria o en eldisco, permitiendo que el orden de recorrido de la lista seadiferente al de almacenamiento.Una ventaja es que pueden recorrerse en ambos sentidos, ya seapara efectuar una operación con cada elemento o para insertar y/oactualizar y borrar.
  10. 10. Como los lenguajes de programación permitenimplementar las listas En java se encuentra un paquete completo en java.util de dondese pueden utilizar las listas, como un tipo abstracto de datos, estetipo de estructura de datos también se utiliza a partir de unainterfaz. En C se utilizan los llamados punteros para representar estaestructura de datos.
  11. 11. Estructura PILADefinicionesEs un caso especial de lista en la cual todas las inserciones y supresionestienen lugar en un extremo determinado llamado tope.Las pilas también son llamadas listas LIFO (Last In- First Out). En el TAD Pila nose definen operaciones de posicionamiento en la pila. Esto es debido a quetodas las operaciones de acceso se realizan en la misma posición, o sea en eltope de la pila.
  12. 12. Objetos Reales
  13. 13. Implementación Nombre: TAD Pila Invariante: n<>0 Operaciones: crearPila() */Devuelve un 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.*/ preCond: N=0 posCond: pila creada insertarPila(crearPila) */mediante este método se insertan datos a la pila ya creada. Con estas se usa el método push para insertar*/ preCond: pila<>null posCond: insertarPila completado (datos insertados en pila) borrarPila() */con este método se elimina cierta pila de datos*/ preCond: pila<>null posCond: pila eliminada
  14. 14. Estructura COLA Es una estructura de datos lineal en donde las eliminaciones se realizan por uno de sus extremos que normalmente se llama frente, y las inserciones se realizan por el otro extremo que normalmente se llama final. A estas estructuras se les llama FIFO (First-In First-Out).
  15. 15. ImplementaciónNombre: TAD ColaInvariante: n/aOperaciones:crearCola()*/Devuelve un valor del tipo cola preparado para ser usado y que contiene un valor de pila vacia. Esta operación es lamisma que la de las listas generales.*/ preCond: N=0 posCond: cola vacia creadainsertarCola(crearCola)*/mediante este método se insertan datos a la cola ya creada.*/ preCond: cola<>null posCond: datos insertados en la cola, cola insertada.borrarCola()*/con este método se elimina cierta cola de datos*/ preCond: cola!=0 posCond: cola eliminada
  16. 16. Particularidades de un TAD Colacon prioridades Se introduce una forma de simular generalidad en los TADs de Modula-2 mediante el uso del TAD ITEM. En una cola de prioridad los elementos están ordenados dependiendo de su prioridad, de manera que esté 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 entra primero. Esto se puede conseguir bien insertando ordenadamente y extrayendo el primer elemento.
  17. 17. Implementación de Cola convectores circulares. Public class Cola { Private static int max = 100; Private Objetc elementos[]; Private int frente, post; }

×