SlideShare una empresa de Scribd logo
1 de 22
Estructura de Datos
    Lista, pila y cola




             Marielys Rodriguez G. 11-1075
             Saira T. Isaac H.     11-1077
LISTA
Objetos reales que se pueden
    modelar con la estructura lista



   Lista de inventario
   Lista de animales
Definiciones de lista


   Una lista es una estructura de datos homogénea
    y dinámica, que va a estar formada por una secuencia de
    elementos, donde cada uno de ellos va seguido de otro o de
    ninguno.


   Lista: colección homogénea de elementos con una relación
    lineal entre ellos. Es decir, cada elemento de la lista
    (excepto el primero) tiene un único elemento predecesor y
    cada elemento (excepto el último) tienen un elemento suceso
TAD lista
        TAD ListOrd[ TipoLO ]
        e1, ..., en
        { inv: ei ei+1, i 1 i < n }


        Constructoras:
        inicListOrd: ListOrd


        Modificadoras:
        insListOrd: ListOrd x TipoLO ListOrd
        elimListOrd: ListOrd x TipoLO ListOrd


        Analizadoras:
        infoListOrd: ListOrd x int TipoLO
        longListOrd: ListOrd int
        estaListOrd ListOrd x TipoLO int
Relación entre los conceptos:
Ventana y el de Lista

   Con relación a las listas estas se pueden organizar en
   manera ordenada y con respect a las ventanas, las
   ventanas poseen características homogéneas al momento
   de su desarrollo. Además aquí vemos cuales atributos y
   operaciones se van a realizar.
Implementaciones de Listas


   Vectores : en esta representación, los elementos de la lista se
    sitúan consecutivamente en un vector. Maneja además dos
    campos adicionales que indican la longitud actual y la posición
    de la ventana.


   Listas doblemente enlazadas: en esta representación, la lista
    tiene un nodo con apuntadores al primer elemento, al último y
    al elemento de la ventana. Los nodos, por su parte, se
    encuentran doblemente encadenados entre sí, para permitir
    que las modificadoras se puedan implementar con algoritmos
    O( 1 ).
Describir los mecanismos mediante los
cuales los lenguajes de programación
permiten implementar las listas.
Implementación Para representar en lenguaje C esta
estructura de datos se utilizarán punteros, un tipo de datos
que suministra el lenguaje. Se representará una lista vacía
con la constante NULL. Se puede definir la lista enlazada
de la siguiente manera: struct lista { int clave; struct
lista*sig; };
Describir cómo los lenguajes que no
manejan apuntadores simulan las
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.
PILA
Objetos reales que se pueden
modelar con la estructura Pila

     Almacén de libros
     Agrupación de ladrillos
     Cuando se montan y desmontan cajas de un camión
Definiciones de Pila

   Pilas son un tipo especial de lista, conocidas como listas LIFO
    (Last In, First Out: el último en entrar es el primero en salir).
    Los elementos se "amontonan" o apilan, de modo que sólo el
    elemento que está encima de la pila puede ser leído, y sólo
    pueden añadirse elementos encima de la pila.


   Una pila es una estructura de datos en la cual solo se pueden
    hacer 2 operaciones : colocar elemento al final o quitar un
    elemento del final.
TAD Pila
           TAD Pila[ TipoP ]
           { inv: TRUE }


           Constructoras:
           inicPila: Pila


           Modificadoras:
           adicPila: Pila x TipoP Pila
           elimPila: Pila Pila


           Analizadoras:
           infoPila: Pila TipoP
           vaciaPila: Pila int


           Destructora:
           destruirPila: Pila
Implementar las pilas a través
de listas y vectores
 A traves de vectores:


 En esta implementación se utiliza un objeto abstracto del TAD
 Lista para representar una pila. El esquema de representación es
 el siguiente:


    La pila pil = se representa con la lista < e1, e2 ... eN>.
    La pila vacía (pil = ) se representa internamente como una lista
     sin elementos (pil = < >).
Un vector es una buena manera de representar una pila, si se
conoce con anterioridad el número máximo de elementos que va a
contener. Sólo se necesita algún medio para marcar el tope de la
pila, puesto que los elementos se colocan en casillas consecutivas
a partir de la primera.


   La pila pil = se representa con la estructura:




   La pila vacía pil = se representa con un cero en el campo que
    indica la posición del tope:
COLA
   Cola de impression
   Filas en Banco
   Filas de los supermercados
   Una cola es una estructura de datos, en la cual solo se pueden
    aplicar estas dos operaciones : colocar un elemento al final, o
    quitar un elemento del principio.


   Se entiende por cola una estructura de datos en la que se
    añaden nuevos ítems en un extremo y se suprimen ítems viejos
    en el opuesto.
TAD Cola[ TipoC ]
{ inv: TRUE }


Constructoras:
inicCola: Cola


Modificadoras:
adicCola: Cola x TipoC Cola
elimCola: Cola Cola


Analizadoras:
infoCola: Cola TipoC
vaciaCola: Cola int


Destructora:
destruirCola: Cola
TAD ColaP[ TipoCP ]
[ x1«p1] [ x2«p2] .... [ xn«pn]
{ inv: pi pk , i < k }


Constructoras:
inicColaP: ColaP


Modificadoras:
adicColaP: ColaP x TipoCP x int ColaP
elimColaP: ColaP ColaP


Analizadoras:
infoColaP: ColaP TipoCP
vaciaColaP: ColaP int


Destructora:
destruirColaP: ColaP
   La diferencia semántica está en que el elemento eliminado de
    la lista no es, necesariamente, el primero que fue añadido.
    Más bien, es el elemento de la cola que tiene la prioridad más
    alta. En la implementación de la Cola de Prioridad no se
    especifica ni qué son las prioridades ni cómo se comparan
    entre ellas. Depende de los elementos que haya en la cola.


   Por ejemplo, si los elementos de la cola tienen
    nombres, podemos elegirlos en orden alfabético. Si son
    puntuaciones de bolos, podemos ir desde la más alta hasta la
    más baja, pero si son puntuaciones de golf, iríamos desde la
    más baja hasta la más alta. Mientras podamos comparar los
    elementos de la cola, podremos encontrar y eliminar el de
    mayor prioridad.
   Si se representa una cola con un vector, las rutinas que
    implementan las operaciones del TAD tienen la siguiente
    complejidad:       inicCola  O( 1 )
                         adicCola    O( 1 )
                         elimCola    O( N )


                         infoCola    O( 1 )
                         vaciaCola   O( 1 )


La ineficiencia en la operación que elimina un elemento ( elimCola - O(
n ) ) se debe a la necesidad de desplazar todos los elementos de la
estructura, para ocupar el lugar liberado después de sacar el primero.
Una posibilidad para evitar este movimiento es marcar los lugares
dentro del arreglo donde comienza y termina la cola.

Más contenido relacionado

La actualidad más candente

Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicasPatriciaU
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasElbery
 
Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilasgeova666
 
Arboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaArboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaLupitaOMG Garmendia
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10chrisflores001
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337CJrosario2
 
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
 
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colaskelvinst
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadasguestbd36f7
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 

La actualidad más candente (19)

Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
COLAS
COLASCOLAS
COLAS
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Colas
ColasColas
Colas
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Arboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaArboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en Java
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas Circulares
 
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colas
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 

Similar a Colas, filas

Estructura de datos
Estructura de datos Estructura de datos
Estructura de datos jarydr18
 
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 y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasedgarg22
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasMaxDLeon
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colasjorgeluis0317
 
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
 
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
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datoscharlezgt
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Listas pilas colas
Listas pilas colasListas pilas colas
Listas pilas colasxpiner
 

Similar a Colas, filas (20)

Estructura de datos
Estructura de datos Estructura 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
 
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
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Fila,pila y cola ..
Fila,pila y cola ..Fila,pila y cola ..
Fila,pila y cola ..
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
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
 
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
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Listas
ListasListas
Listas
 
Listas pilas colas
Listas pilas colasListas pilas colas
Listas pilas colas
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 

Colas, filas

  • 1. Estructura de Datos Lista, pila y cola Marielys Rodriguez G. 11-1075 Saira T. Isaac H. 11-1077
  • 3. Objetos reales que se pueden modelar con la estructura lista  Lista de inventario  Lista de animales
  • 4. Definiciones de lista  Una lista es una estructura de datos homogénea y dinámica, que va a estar formada por una secuencia de elementos, donde cada uno de ellos va seguido de otro o de ninguno.  Lista: colección homogénea de elementos con una relación lineal entre ellos. Es decir, cada elemento de la lista (excepto el primero) tiene un único elemento predecesor y cada elemento (excepto el último) tienen un elemento suceso
  • 5. TAD lista TAD ListOrd[ TipoLO ] e1, ..., en { inv: ei ei+1, i 1 i < n } Constructoras: inicListOrd: ListOrd Modificadoras: insListOrd: ListOrd x TipoLO ListOrd elimListOrd: ListOrd x TipoLO ListOrd Analizadoras: infoListOrd: ListOrd x int TipoLO longListOrd: ListOrd int estaListOrd ListOrd x TipoLO int
  • 6. Relación entre los conceptos: Ventana y el de Lista Con relación a las listas estas se pueden organizar en manera ordenada y con respect a las ventanas, las ventanas poseen características homogéneas al momento de su desarrollo. Además aquí vemos cuales atributos y operaciones se van a realizar.
  • 7. Implementaciones de Listas  Vectores : en esta representación, los elementos de la lista se sitúan consecutivamente en un vector. Maneja además dos campos adicionales que indican la longitud actual y la posición de la ventana.  Listas doblemente enlazadas: en esta representación, la lista tiene un nodo con apuntadores al primer elemento, al último y al elemento de la ventana. Los nodos, por su parte, se encuentran doblemente encadenados entre sí, para permitir que las modificadoras se puedan implementar con algoritmos O( 1 ).
  • 8. Describir los mecanismos mediante los cuales los lenguajes de programación permiten implementar las listas. Implementación Para representar en lenguaje C esta estructura de datos se utilizarán punteros, un tipo de datos que suministra el lenguaje. Se representará una lista vacía con la constante NULL. Se puede definir la lista enlazada de la siguiente manera: struct lista { int clave; struct lista*sig; };
  • 9. Describir cómo los lenguajes que no manejan apuntadores simulan las 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.
  • 10. PILA
  • 11. Objetos reales que se pueden modelar con la estructura Pila  Almacén de libros  Agrupación de ladrillos  Cuando se montan y desmontan cajas de un camión
  • 12. Definiciones de Pila  Pilas son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out: el último en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que sólo el elemento que está encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila.  Una pila es una estructura de datos en la cual solo se pueden hacer 2 operaciones : colocar elemento al final o quitar un elemento del final.
  • 13. TAD Pila TAD Pila[ TipoP ] { inv: TRUE } Constructoras: inicPila: Pila Modificadoras: adicPila: Pila x TipoP Pila elimPila: Pila Pila Analizadoras: infoPila: Pila TipoP vaciaPila: Pila int Destructora: destruirPila: Pila
  • 14. Implementar las pilas a través de listas y vectores A traves de vectores: En esta implementación se utiliza un objeto abstracto del TAD Lista para representar una pila. El esquema de representación es el siguiente:  La pila pil = se representa con la lista < e1, e2 ... eN>.  La pila vacía (pil = ) se representa internamente como una lista sin elementos (pil = < >).
  • 15. Un vector es una buena manera de representar una pila, si se conoce con anterioridad el número máximo de elementos que va a contener. Sólo se necesita algún medio para marcar el tope de la pila, puesto que los elementos se colocan en casillas consecutivas a partir de la primera.  La pila pil = se representa con la estructura:  La pila vacía pil = se representa con un cero en el campo que indica la posición del tope:
  • 16. COLA
  • 17. Cola de impression  Filas en Banco  Filas de los supermercados
  • 18. Una cola es una estructura de datos, en la cual solo se pueden aplicar estas dos operaciones : colocar un elemento al final, o quitar un elemento del principio.  Se entiende por cola una estructura de datos en la que se añaden nuevos ítems en un extremo y se suprimen ítems viejos en el opuesto.
  • 19. TAD Cola[ TipoC ] { inv: TRUE } Constructoras: inicCola: Cola Modificadoras: adicCola: Cola x TipoC Cola elimCola: Cola Cola Analizadoras: infoCola: Cola TipoC vaciaCola: Cola int Destructora: destruirCola: Cola
  • 20. TAD ColaP[ TipoCP ] [ x1«p1] [ x2«p2] .... [ xn«pn] { inv: pi pk , i < k } Constructoras: inicColaP: ColaP Modificadoras: adicColaP: ColaP x TipoCP x int ColaP elimColaP: ColaP ColaP Analizadoras: infoColaP: ColaP TipoCP vaciaColaP: ColaP int Destructora: destruirColaP: ColaP
  • 21. La diferencia semántica está en que el elemento eliminado de la lista no es, necesariamente, el primero que fue añadido. Más bien, es el elemento de la cola que tiene la prioridad más alta. En la implementación de la Cola de Prioridad no se especifica ni qué son las prioridades ni cómo se comparan entre ellas. Depende de los elementos que haya en la cola.  Por ejemplo, si los elementos de la cola tienen nombres, podemos elegirlos en orden alfabético. Si son puntuaciones de bolos, podemos ir desde la más alta hasta la más baja, pero si son puntuaciones de golf, iríamos desde la más baja hasta la más alta. Mientras podamos comparar los elementos de la cola, podremos encontrar y eliminar el de mayor prioridad.
  • 22. Si se representa una cola con un vector, las rutinas que implementan las operaciones del TAD tienen la siguiente complejidad: inicCola O( 1 ) adicCola O( 1 ) elimCola O( N ) infoCola O( 1 ) vaciaCola O( 1 ) La ineficiencia en la operación que elimina un elemento ( elimCola - O( n ) ) se debe a la necesidad de desplazar todos los elementos de la estructura, para ocupar el lugar liberado después de sacar el primero. Una posibilidad para evitar este movimiento es marcar los lugares dentro del arreglo donde comienza y termina la cola.