SlideShare una empresa de Scribd logo
1 de 26
Listas
Pilas
Colas




          Edward Mejia
Listas
  Estructura de datos organizada de forma secuencial,
  homogénea y dinámica. Con dinámica nos referimos
  que puede crecer o decrecer en tiempo de ejecución
  según nuestras necesidades.
Podríamos mencionar 2 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.
 Doblemente enlazada: al igual que la lista enlazada,
 es un TDA dinámico lineal pero, a diferencia de este,
 cada nodo de la lista doblemente enlazada contiene
 dos punteros, de forma que uno apunta al siguiente
 nodo y el otro al predecesor. Esta característica,
 permite que se pueda recorrer la lista en ambos
 sentidos, cosa que no es posible en las listas simples.
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.
Para que esta estructura sea un TDA lista enlazada, debe tener unos
  operadores asociados que permitan la manipulación de los datos
  que contiene.
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
Lista a base de vectores
 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.
Implementación de listas a base de
apuntadores
 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.
Implementación de listas
doblemente enlazadas
 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.
Esquema de un nodo y una lista
enlazada.
Objetos reales modelados en listas
 Lista de matriculas.
 Lista de artículos de un inventario.
 Lista de invitados.
Tad lista
 Tipo: Unidimensional
 {inv:N pertenece Z+(numeros enteros positivos}
 Operaciones:
   Crear_vectorint>vector
   Asignar_valoresvectorxint>vector
   Ordenar_vectorvectorxint>vector
   Determ_centrovectorxint>int
pilas
 Una pila, es una estructura de datos en la que el último
 elemento en entrar es el primero en salir, lo que
 también se denominan estructuras LIFO(Last In, First
 Out).
 En esta estructura sólo se tiene acceso a la cabeza o
 cima de la pila.
 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.
Objetos Reales modelados en pila
Proporcionan un medio ordenado de demorar la
  realización de las tareas secundarias que aparecen
  durante la ejecución del programa.

•Suelen ir asociadas a algoritmos
recursivos.
•Tipos derivados: pilas de programas,
pila del analizador sintáctico (parser).
TAD PILAS
 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
 insertarPila(crearPila)
    Mediante este método se insertan datos a la pila ya creada.
    Con las pilas se usa el método push para insertar.
   Precondiciones: pila<>null
   Poscondiciones:insertarPilacompletado (datos insertado
    en pila)
   borrarPila()
    Con este método se elimina cierta pila de datos
   Precondiciones:pila<>null
   Poscondiciones:pilaeliminada
Cola
 Una cola es una estructura de datos donde el primer
 elemento en entrar es el primero en salir, también
 denominadas estructuras FIFO (First In, First Out).

 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.
Operaciones básicas
 insertar, quitarPrimero y primero.
 Cada rutina debería ejecutarse en tiempo constante.
Implementación circular a base de vectores
 La implementación circular devuelve cabeza y fin
  al principio del
  vector cuando rebasan la ultima posición.
Amortización de la duplicación del
vector
 Cuando el vector no se duplica, toda operación se
 realiza en tiempo constante.
   La complejidad de una inserción con duplicación es
    O(N).
 La duplicación de un vector de N elementos esta
  precedida, al menos, por N/2 inserciones que no
  duplican el vector.
 Repartiendo el coste O(N) de la duplicación entre las
  inserciones precedentes.
   El coste de insertar aumenta solo en una constante.
Colas en vectores circulares
Cola con prioridades
 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.
TAD cola
 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
Objetos reales modelados con
colas
  Las colas se utilizan en muchos algoritmos y en
  situaciones en las que el rendimiento de dos sistemas
  que se cruzan datos entre sí es más eficiente cuando no
  se intercambian indicativos y señales de control
  (handshaking) en cada transferencia.
•También almacenan temporalmente la transferencia de
  información, lo que permite procesarla en origen y en
  destino a tasas independientes.
•La cola de eventos en Java es un buen ejemplo.
•Tipos derivados: colas de prioridad y flujos de datos
Bibliografia
 http://www.calcifer.org/documentos/librognome/glib-
  lists-queues.html
 http://quegrande.org/apuntes/EI/2/Alg/teoria/07-
  08/tema_2.1_-_pilas,_colas_y_listas.pdf
 http://www.slideshare.net/jose3jo/listas-pilas-y-colas-
  7072889
 http://www.slideshare.net/egpena/estructura-de-
  datos-listas-pilas-y-colas-7075952

Más contenido relacionado

La actualidad más candente

Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 
Estructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colasEstructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colasIARINAIA
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnaskety24
 
Estructuras dinamicas ppt
Estructuras dinamicas pptEstructuras dinamicas ppt
Estructuras dinamicas pptAby Castillo
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesMago Julio Cesar
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasJose R. Trejo
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 

La actualidad más candente (20)

COLAS
COLASCOLAS
COLAS
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicas
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Listas
ListasListas
Listas
 
Estructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colasEstructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colas
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnas
 
Estructuras dinamicas ppt
Estructuras dinamicas pptEstructuras dinamicas ppt
Estructuras dinamicas ppt
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas Circulares
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 

Destacado

Estructura de datos_Listas encadenadas presentacion
Estructura de datos_Listas encadenadas  presentacionEstructura de datos_Listas encadenadas  presentacion
Estructura de datos_Listas encadenadas presentacionGabriely Peña
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasElbery
 
Chipkit comunicacion puerto serie
Chipkit comunicacion puerto serieChipkit comunicacion puerto serie
Chipkit comunicacion puerto serieDaniel Cruz
 
Logica de programacion
Logica de programacionLogica de programacion
Logica de programacionPaola Lesmes
 
Programacion logica 1
Programacion logica 1Programacion logica 1
Programacion logica 1profedelvalle
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasElvis Perez
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasMaxDLeon
 
Programación Lógica con PROLOG
Programación Lógica con PROLOGProgramación Lógica con PROLOG
Programación Lógica con PROLOGDaniel Cruz
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellSoftware Guru
 
Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.christgch
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Logica y Algoritmos
Logica y AlgoritmosLogica y Algoritmos
Logica y AlgoritmosDSGP
 
Aplicaciones Distribuidas
Aplicaciones DistribuidasAplicaciones Distribuidas
Aplicaciones DistribuidasSorey García
 
Pilas, colas & listas estructura de datos
Pilas, colas & listas   estructura de datosPilas, colas & listas   estructura de datos
Pilas, colas & listas estructura de datosKenia Adams
 

Destacado (20)

Estructura de datos_Listas encadenadas presentacion
Estructura de datos_Listas encadenadas  presentacionEstructura de datos_Listas encadenadas  presentacion
Estructura de datos_Listas encadenadas presentacion
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Chipkit comunicacion puerto serie
Chipkit comunicacion puerto serieChipkit comunicacion puerto serie
Chipkit comunicacion puerto serie
 
Logica de programacion
Logica de programacionLogica de programacion
Logica de programacion
 
Programacion logica 1
Programacion logica 1Programacion logica 1
Programacion logica 1
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas y Pilas
Listas y PilasListas y Pilas
Listas y Pilas
 
Lógica de programación
Lógica de programaciónLógica de programación
Lógica de programación
 
Programación Lógica con PROLOG
Programación Lógica con PROLOGProgramación Lógica con PROLOG
Programación Lógica con PROLOG
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.Estructura de datos Pilas, Colas y Listas.
Estructura de datos Pilas, Colas y Listas.
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Lógica y programación orientada a objetos:Un enfoque basado en problemas
Lógica y programación orientada a objetos:Un enfoque basado en problemasLógica y programación orientada a objetos:Un enfoque basado en problemas
Lógica y programación orientada a objetos:Un enfoque basado en problemas
 
Logica y Algoritmos
Logica y AlgoritmosLogica y Algoritmos
Logica y Algoritmos
 
Aplicaciones Distribuidas
Aplicaciones DistribuidasAplicaciones Distribuidas
Aplicaciones Distribuidas
 
10 Tips para desarrollar tu lógica de programación
10 Tips para desarrollar tu lógica de programación10 Tips para desarrollar tu lógica de programación
10 Tips para desarrollar tu lógica de programación
 
Pilas, colas & listas estructura de datos
Pilas, colas & listas   estructura de datosPilas, colas & listas   estructura de datos
Pilas, colas & listas estructura de datos
 

Similar a Listas pilascolas edward.mejia-10-1314

Estructura de datos
Estructura de datosEstructura de datos
Estructura de datoscharlezgt
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colasjorgeluis0317
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colaslabarra90
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colaslabarra90
 
Estructura de datos evidencias
Estructura de datos evidenciasEstructura de datos evidencias
Estructura de datos evidenciaslenithoz
 
Estructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesEstructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesJosé Antonio Sandoval Acosta
 
Lissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colasLissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colasLissette I. Pimentel S
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130reyarturo16
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colasAmaury Pascal
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colasAmaury Pascal
 

Similar a Listas pilascolas edward.mejia-10-1314 (20)

Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colas
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colas
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Estructura de datos evidencias
Estructura de datos evidenciasEstructura de datos evidencias
Estructura de datos evidencias
 
Estructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesEstructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras Lineales
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Lissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colasLissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colas
 
Darwin rodriguez 12-0861_pilasy_colas
Darwin rodriguez 12-0861_pilasy_colasDarwin rodriguez 12-0861_pilasy_colas
Darwin rodriguez 12-0861_pilasy_colas
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colas
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colas
 

Listas pilascolas edward.mejia-10-1314

  • 2. Listas Estructura de datos organizada de forma secuencial, homogénea y dinámica. Con dinámica nos referimos que puede crecer o decrecer en tiempo de ejecución según nuestras necesidades. Podríamos mencionar 2 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.  Doblemente enlazada: al igual que la lista enlazada, es un TDA dinámico lineal pero, a diferencia de este, cada nodo de la lista doblemente enlazada contiene dos punteros, de forma que uno apunta al siguiente nodo y el otro al predecesor. Esta característica, permite que se pueda recorrer la lista en ambos sentidos, cosa que no es posible en las listas simples.
  • 4. 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.
  • 5. Para que esta estructura sea un TDA lista enlazada, debe tener unos operadores asociados que permitan la manipulación de los datos que contiene. 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
  • 6. Lista a base de vectores  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.
  • 7. Implementación de listas a base de apuntadores  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.
  • 8. Implementación de listas doblemente enlazadas  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.
  • 9. Esquema de un nodo y una lista enlazada.
  • 10. Objetos reales modelados en listas  Lista de matriculas.  Lista de artículos de un inventario.  Lista de invitados.
  • 11. Tad lista  Tipo: Unidimensional  {inv:N pertenece Z+(numeros enteros positivos}  Operaciones:  Crear_vectorint>vector  Asignar_valoresvectorxint>vector  Ordenar_vectorvectorxint>vector  Determ_centrovectorxint>int
  • 12. pilas Una pila, es una estructura de datos en la que el último elemento en entrar es el primero en salir, lo que también se denominan estructuras LIFO(Last In, First Out). En esta estructura sólo se tiene acceso a la cabeza o cima de la pila.
  • 13.  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.
  • 14. Objetos Reales modelados en pila Proporcionan un medio ordenado de demorar la realización de las tareas secundarias que aparecen durante la ejecución del programa. •Suelen ir asociadas a algoritmos recursivos. •Tipos derivados: pilas de programas, pila del analizador sintáctico (parser).
  • 15. TAD PILAS  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
  • 16.  insertarPila(crearPila) Mediante este método se insertan datos a la pila ya creada. Con las pilas se usa el método push para insertar.  Precondiciones: pila<>null  Poscondiciones:insertarPilacompletado (datos insertado en pila)  borrarPila() Con este método se elimina cierta pila de datos  Precondiciones:pila<>null  Poscondiciones:pilaeliminada
  • 17. Cola Una cola es una estructura de datos donde el primer elemento en entrar es el primero en salir, también denominadas estructuras FIFO (First In, First Out). 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. Operaciones básicas  insertar, quitarPrimero y primero.  Cada rutina debería ejecutarse en tiempo constante.
  • 19. Implementación circular a base de vectores  La implementación circular devuelve cabeza y fin al principio del vector cuando rebasan la ultima posición.
  • 20.
  • 21. Amortización de la duplicación del vector  Cuando el vector no se duplica, toda operación se realiza en tiempo constante.  La complejidad de una inserción con duplicación es O(N).  La duplicación de un vector de N elementos esta precedida, al menos, por N/2 inserciones que no duplican el vector.  Repartiendo el coste O(N) de la duplicación entre las inserciones precedentes.  El coste de insertar aumenta solo en una constante.
  • 22. Colas en vectores circulares
  • 23. Cola con prioridades  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.
  • 24. TAD cola  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
  • 25. Objetos reales modelados con colas Las colas se utilizan en muchos algoritmos y en situaciones en las que el rendimiento de dos sistemas que se cruzan datos entre sí es más eficiente cuando no se intercambian indicativos y señales de control (handshaking) en cada transferencia. •También almacenan temporalmente la transferencia de información, lo que permite procesarla en origen y en destino a tasas independientes. •La cola de eventos en Java es un buen ejemplo. •Tipos derivados: colas de prioridad y flujos de datos
  • 26. Bibliografia  http://www.calcifer.org/documentos/librognome/glib- lists-queues.html  http://quegrande.org/apuntes/EI/2/Alg/teoria/07- 08/tema_2.1_-_pilas,_colas_y_listas.pdf  http://www.slideshare.net/jose3jo/listas-pilas-y-colas- 7072889  http://www.slideshare.net/egpena/estructura-de- datos-listas-pilas-y-colas-7075952