SlideShare una empresa de Scribd logo
PNFSI

   Asignatura: Desarrollo de Software

   Tema: Listas




Ing. Zamantha González Díaz             Abril, 2008
Tema: Listas
Contenido
• Tipo de Dato Abstracto (TDA).
• Listas lineales.
• Tipos de implementaciones de listas.
• Pilas y Colas.
• Implementación en C++
Tipo de Dato Abstracto
Un Tipo de Dato Abstracto (TDA) se define como
un modelo matemático con un conjunto de
operaciones que se definen sobre este modelo.

Define un tipo de dato e incluye la descripción de
todo el comportamiento asociado al dato.

No está asociado a ninguna implementación. El
implementar un TDA supone la traducción de las
especificaciones del TDA en las sintaxis de un
lenguaje de programación en particular.
Tipo de Dato Abstracto
Al implementar un TDA en la POO, se debe
encapsular toda la lógica de almacenamiento y lograr
que la comunicación sea a través de los métodos de
acceso que se definen en la interfaz pública de la
implementación del TDA.
Conceptos básicos
Se denomina Nodo, elemento o también ítem, a la
unidad de información más elemental o indivisible.
TDA Lista Lineal
Una lista lineal es un conjunto de N nodos l1, l2, …
ln, con n  0, cuyas propiedades estructurales
esenciales incluyen sólo las posiciones lineales
(unidimensionales) relativas de los nodos; para ella
se definen operaciones como las siguientes:
• Tener acceso a un nodo.
• Insertar y eliminar un nodo en la lista.
• Combinar dos o más listas en una.
• Dividir una lista en dos o más listas.
• Determinar la cantidad de nodos de la lista.
• Ordenar la lista de acuerdo a un criterio.
• Buscar un elemento bajo una condición.
TDA Lista Lineal
Aclaraciones:
• n = 0 denota a la lista vacía, o sea, una lista que no
tiene elementos.
• Si n > 0, l1 es el primer nodo.
• Si 1 < k < n, lk es precedido por el nodo lk-1 y
seguido por el nodo lk+1.
• Si n > 0, IN es el último nodo.
TDA Lista Lineal
Una misma definición de un TDA puede conllevar a
implementaciones diferentes en dependencia de las
necesidades, así como de las características del
lenguaje en el que se va a desarrollar dicha
implementación.

Por su forma de almacenamiento, la lista lineal se
puede implementar en una de las siguientes
disposiciones:
• Secuencial
• Enlazada
Lista Secuencial
Una de las formas más simples de implementación
de este TDA es usando un arreglo unidimensional.

Todos los elementos de la lista se almacenan en
posiciones de memoria consecutivas. Por eso se
habla de disposición secuencial en la memoria de la
computadora.

A la lista se le conoce como lista secuencial.
Lista Secuencial



                                ...
1       2      3        4   5         N

    Índice del último                     Cantidad física
     nodo de la lista                      de elementos
                                            del arreglo
Ventajas y desventajas
Ventajas
Con esta disposición se accede a cualquier elemento
de la estructura de datos en tiempo constante.

Desventajas
Al asignar el arreglo en tiempo de compilación debe
establecerse un límite a priori sobre el número de
elementos que pueden ser almacenados en las
listas.

Para inserciones y eliminaciones frecuentes hay que
hacer corrimientos costosos.
Lista enlazada
En una lista enlazada se asigna memoria para el
almacenar los elementos de la lista conforme se va
necesitando, es decir a medida que se añaden o
insertan los elementos, y se conectan los elementos
de la lista con punteros.

La memoria es liberada cuando ya no se necesita
más un elemento en la lista.

Esquemáticamente una lista enlazada se representa
por una secuencia de nodos conectados por enlaces.
Lista enlazada

primero




Cada nodo está conectado al siguiente por un solo
enlace, a esta estructura de datos se llama lista
simplemente enlazada.
Lista enlazada
•Un nodo de una lista simplemente enlazada
contiene dos campos: datos (contiene un elemento
de la lista) y siguiente (almacena un enlace al
siguiente nodo de la lista).

•El campo siguiente del último nodo contiene un
símbolo especial que indica el final de las lista.

•Se accede a la lista por medio de un apuntador al
primer elemento y solo se puede recorrer la lista en
un sentido, del primer nodo al último nodo.
Lista doblemente enlazada
                                     •…
primero




Cada nodo contiene tres campos: un campo que
almacena el elemento de la lista y los otros dos
almacenan los enlaces a los nodos precedente y
siguiente de la lista.
Se usan punteros        nulos   para marcar   ambos
extremos de la lista.
Lista enlazada circular

primero




El campo siguiente del último nodo de la lista apunta
al primer nodo de la lista.
Lista doblemente enlazada circular

                                     •…
primero




 El campo siguiente del último nodo apunte al primer
 nodo de la lista y el campo anterior del primer nodo
 apunte al último nodo de la lista.
Ventajas y desventajas
Ventajas
No es preciso conocer la cantidad de elementos en
tiempo de compilación.
Ni las inserciones ni las eliminaciones implican
realizar corrimientos de los elementos de la lista.

Desventajas
No permite el acceso directo a un elemento arbitrario
de la lista. Para acceder al i-ésimo elemento,
debemos recorrer la lista, comenzando por el primer
nodo, hasta llegar al elemento deseado.
primero
                                  Pila
 (tope)

          Una pila (stack) es un conjunto dinámico
          que obedece al orden LIFO.

          La pila es un caso particular de lista en la
          que todas las inserciones y extracciones de
          elementos se realizan por un solo extremo,
          llamado el tope de la pila.
Operaciones en pilas
Estas operaciones reciben nombres especiales:
•Insertar (x). Inserta x en S. (Apilar o Push).

•Tope. Devuelve el elemento que fue insertado más
recientemente en S. (Cima).

•Eliminar. Devuelve el elemento que fue insertado
más recientemente y lo elimina. (Desapilar o Pop).

•Vacía. Devolver si la pila está vacía.
Cola
primero
          Una cola (queue) es un conjunto dinámico
          que obedece al orden FIFO.

          La cola es un caso particular de lista para
          la que todas las inserciones se realizan
          siempre por un extremo y las extracciones
          se realizan siempre por el extremo opuesto.


 último
Operaciones en colas
Estas operaciones reciben nombres especiales:
•Insertar (x). Inserta x en la cola.

•Primero. Devuelve el elemento que lleva más
tiempo en la cola.

•Eliminar. Devuelve el elemento que lleva más
tiempo en la cola y lo elimina. (Avanzar)

•Vacía. Devolver si la cola está vacía.
Ejemplos
Un ejemplo de pila lo constituye el mecanismo que
establecen los lenguajes de programación para
garantizar las llamadas anidadas a subprogramas
dentro de una aplicación.

Un ejemplo de cola es la cola de impresión en el
sistema operativo Windows. Cada usuario de una red
de Windows coloca sus trabajos de impresión y el
sistema lo imprime en el mismo orden en que fueron
insertados en la cola de impresión.
Cola secuencial


                                   ...
            0     1   2   3   4          N-1

 Índice del                        Índice del
primer elemento               último elemento

                                  Cantidad física
                                  de elementos
Cola secuencial
•No hay correspondencia entre la posición del
último nodo y la cantidad de nodos de la cola.

•La condición de cola llena y de cola vacía, no se
pueden verificar haciendo uso del índice del
arreglo.
Cola circular
                  0      1
            N-1                  2
            .
        .                                3

   13                                    4

   12                                    5

        11                           6
             10                 7
                  9       8




La cola circular propone tratar el arreglo como un
círculo donde cuando aLength se hace igual a aSize,
el siguiente elemento es el de índice 0. Esto permite
utilizar todos los espacios que quedan libres en el
arreglo luego de realizar eliminaciones de nodos.
Implementación en C++
              •TBaseList



•TSeqList                      •TLinkedList


•TGSeqList                         •TGLinkedList


                           •TDoubleList       •TCircLinked
        •TNode

                           •TDoubleCirc
        •TDoubleNode
Facilidades de los lenguajes

Los lenguajes de programación proporcionan
utilidades que permiten al desarrollador crear
estructuras de datos.

Objetivo: proporcionar clases, interfaces y
algoritmos para utilizar las estructuras de una
manera estandar.

Más contenido relacionado

La actualidad más candente

Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
Alvaro Enrique Ruano
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
NANO-06
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
Johnny Paucar
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
Daniel Gomez Jaramillo
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
Alvaro Enrique Ruano
 
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
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
NANO-06
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
Vannesa Salazar
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
Kaneki04
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
neftali omar peña balam
 
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
José Antonio Sandoval Acosta
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
José Antonio Sandoval Acosta
 
Metodos de ordenacion radix sort
Metodos de ordenacion radix sortMetodos de ordenacion radix sort
Metodos de ordenacion radix sorttephyfree
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
José Antonio Sandoval Acosta
 
arboles avl con codigo en java
arboles avl con codigo en javaarboles avl con codigo en java
arboles avl con codigo en java
marhoz
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
deff000001
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
eccutpl
 

La actualidad más candente (20)

Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
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 como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
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
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
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
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Metodos de ordenacion radix sort
Metodos de ordenacion radix sortMetodos de ordenacion radix sort
Metodos de ordenacion radix sort
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Listas
ListasListas
Listas
 
arboles avl con codigo en java
arboles avl con codigo en javaarboles avl con codigo en java
arboles avl con codigo en java
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
 

Similar a Listas

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
 
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
José Antonio Sandoval Acosta
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
MaxDLeon
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337CJrosario2
 
Listas en C#
Listas en C#Listas en C#
Listas en C#rezzaca
 
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
 
Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose Tannous
Jose Tannous
 
Tad Colas
Tad ColasTad Colas
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
charlezgt
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnaskety24
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
jorgeluis0317
 

Similar a Listas (20)

Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
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
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
Colas, filas
Colas, filasColas, filas
Colas, filas
 
Saiymari colas, filas y nos e que otra cosa
Saiymari colas, filas y nos e que otra cosaSaiymari colas, filas y nos e que otra cosa
Saiymari colas, filas y nos e que otra cosa
 
Presentación1
Presentación1Presentación1
Presentación1
 
05 listas1 t2018
05 listas1 t201805 listas1 t2018
05 listas1 t2018
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
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 listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose Tannous
 
Tad Colas
Tad ColasTad Colas
Tad Colas
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnas
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 

Más de Zamantha Gonzalez Universidad Nacional Abierta

Elementos del diseño visual
Elementos del diseño visualElementos del diseño visual
Instructivo Autocorreccion Pruebas Objetivas UNA
Instructivo Autocorreccion Pruebas Objetivas UNAInstructivo Autocorreccion Pruebas Objetivas UNA
Instructivo Autocorreccion Pruebas Objetivas UNA
Zamantha Gonzalez Universidad Nacional Abierta
 
Estrategias
EstrategiasEstrategias
Aspectos básicos de google classroom
Aspectos básicos de google classroomAspectos básicos de google classroom
Aspectos básicos de google classroom
Zamantha Gonzalez Universidad Nacional Abierta
 
Lineamientos curso de iniciación 2017 1
Lineamientos curso de iniciación 2017 1Lineamientos curso de iniciación 2017 1
Lineamientos curso de iniciación 2017 1
Zamantha Gonzalez Universidad Nacional Abierta
 
Presentacion telemática educativa
Presentacion telemática educativaPresentacion telemática educativa
Presentacion telemática educativa
Zamantha Gonzalez Universidad Nacional Abierta
 
Uso y creacion de unidades
Uso y creacion de unidadesUso y creacion de unidades
Estrategias objetivo 8
Estrategias objetivo 8Estrategias objetivo 8
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Tipos de datos en pascal
Tipos de datos en pascalTipos de datos en pascal
EVERNOTE
EVERNOTEEVERNOTE
Encuentro inicial
Encuentro inicialEncuentro inicial
Encuentro inicial estudiantes primer semestre
Encuentro inicial estudiantes primer semestreEncuentro inicial estudiantes primer semestre
Encuentro inicial estudiantes primer semestre
Zamantha Gonzalez Universidad Nacional Abierta
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje

Más de Zamantha Gonzalez Universidad Nacional Abierta (20)

Elementos del diseño visual
Elementos del diseño visualElementos del diseño visual
Elementos del diseño visual
 
Instructivo Autocorreccion Pruebas Objetivas UNA
Instructivo Autocorreccion Pruebas Objetivas UNAInstructivo Autocorreccion Pruebas Objetivas UNA
Instructivo Autocorreccion Pruebas Objetivas UNA
 
Estrategias
EstrategiasEstrategias
Estrategias
 
Aspectos básicos de google classroom
Aspectos básicos de google classroomAspectos básicos de google classroom
Aspectos básicos de google classroom
 
Lineamientos curso de iniciación 2017 1
Lineamientos curso de iniciación 2017 1Lineamientos curso de iniciación 2017 1
Lineamientos curso de iniciación 2017 1
 
Presentacion telemática educativa
Presentacion telemática educativaPresentacion telemática educativa
Presentacion telemática educativa
 
Uso y creacion de unidades
Uso y creacion de unidadesUso y creacion de unidades
Uso y creacion de unidades
 
Estrategias objetivo 8
Estrategias objetivo 8Estrategias objetivo 8
Estrategias objetivo 8
 
Estrategias objetivo 7
Estrategias objetivo 7Estrategias objetivo 7
Estrategias objetivo 7
 
Estrategias objetivo 6
Estrategias objetivo 6Estrategias objetivo 6
Estrategias objetivo 6
 
Estrategias objetivo 5
Estrategias objetivo 5Estrategias objetivo 5
Estrategias objetivo 5
 
Geolocalización móvil
Geolocalización móvilGeolocalización móvil
Geolocalización móvil
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 
Tipos de datos en pascal
Tipos de datos en pascalTipos de datos en pascal
Tipos de datos en pascal
 
EVERNOTE
EVERNOTEEVERNOTE
EVERNOTE
 
Encuentro inicial
Encuentro inicialEncuentro inicial
Encuentro inicial
 
Encuentro inicial estudiantes primer semestre
Encuentro inicial estudiantes primer semestreEncuentro inicial estudiantes primer semestre
Encuentro inicial estudiantes primer semestre
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 

Último

trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 

Último (20)

trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 

Listas

  • 1. PNFSI Asignatura: Desarrollo de Software Tema: Listas Ing. Zamantha González Díaz Abril, 2008
  • 2. Tema: Listas Contenido • Tipo de Dato Abstracto (TDA). • Listas lineales. • Tipos de implementaciones de listas. • Pilas y Colas. • Implementación en C++
  • 3. Tipo de Dato Abstracto Un Tipo de Dato Abstracto (TDA) se define como un modelo matemático con un conjunto de operaciones que se definen sobre este modelo. Define un tipo de dato e incluye la descripción de todo el comportamiento asociado al dato. No está asociado a ninguna implementación. El implementar un TDA supone la traducción de las especificaciones del TDA en las sintaxis de un lenguaje de programación en particular.
  • 4. Tipo de Dato Abstracto Al implementar un TDA en la POO, se debe encapsular toda la lógica de almacenamiento y lograr que la comunicación sea a través de los métodos de acceso que se definen en la interfaz pública de la implementación del TDA.
  • 5. Conceptos básicos Se denomina Nodo, elemento o también ítem, a la unidad de información más elemental o indivisible.
  • 6. TDA Lista Lineal Una lista lineal es un conjunto de N nodos l1, l2, … ln, con n  0, cuyas propiedades estructurales esenciales incluyen sólo las posiciones lineales (unidimensionales) relativas de los nodos; para ella se definen operaciones como las siguientes: • Tener acceso a un nodo. • Insertar y eliminar un nodo en la lista. • Combinar dos o más listas en una. • Dividir una lista en dos o más listas. • Determinar la cantidad de nodos de la lista. • Ordenar la lista de acuerdo a un criterio. • Buscar un elemento bajo una condición.
  • 7. TDA Lista Lineal Aclaraciones: • n = 0 denota a la lista vacía, o sea, una lista que no tiene elementos. • Si n > 0, l1 es el primer nodo. • Si 1 < k < n, lk es precedido por el nodo lk-1 y seguido por el nodo lk+1. • Si n > 0, IN es el último nodo.
  • 8. TDA Lista Lineal Una misma definición de un TDA puede conllevar a implementaciones diferentes en dependencia de las necesidades, así como de las características del lenguaje en el que se va a desarrollar dicha implementación. Por su forma de almacenamiento, la lista lineal se puede implementar en una de las siguientes disposiciones: • Secuencial • Enlazada
  • 9. Lista Secuencial Una de las formas más simples de implementación de este TDA es usando un arreglo unidimensional. Todos los elementos de la lista se almacenan en posiciones de memoria consecutivas. Por eso se habla de disposición secuencial en la memoria de la computadora. A la lista se le conoce como lista secuencial.
  • 10. Lista Secuencial ... 1 2 3 4 5 N Índice del último Cantidad física nodo de la lista de elementos del arreglo
  • 11. Ventajas y desventajas Ventajas Con esta disposición se accede a cualquier elemento de la estructura de datos en tiempo constante. Desventajas Al asignar el arreglo en tiempo de compilación debe establecerse un límite a priori sobre el número de elementos que pueden ser almacenados en las listas. Para inserciones y eliminaciones frecuentes hay que hacer corrimientos costosos.
  • 12. Lista enlazada En una lista enlazada se asigna memoria para el almacenar los elementos de la lista conforme se va necesitando, es decir a medida que se añaden o insertan los elementos, y se conectan los elementos de la lista con punteros. La memoria es liberada cuando ya no se necesita más un elemento en la lista. Esquemáticamente una lista enlazada se representa por una secuencia de nodos conectados por enlaces.
  • 13. Lista enlazada primero Cada nodo está conectado al siguiente por un solo enlace, a esta estructura de datos se llama lista simplemente enlazada.
  • 14. Lista enlazada •Un nodo de una lista simplemente enlazada contiene dos campos: datos (contiene un elemento de la lista) y siguiente (almacena un enlace al siguiente nodo de la lista). •El campo siguiente del último nodo contiene un símbolo especial que indica el final de las lista. •Se accede a la lista por medio de un apuntador al primer elemento y solo se puede recorrer la lista en un sentido, del primer nodo al último nodo.
  • 15. Lista doblemente enlazada •… primero Cada nodo contiene tres campos: un campo que almacena el elemento de la lista y los otros dos almacenan los enlaces a los nodos precedente y siguiente de la lista. Se usan punteros nulos para marcar ambos extremos de la lista.
  • 16. Lista enlazada circular primero El campo siguiente del último nodo de la lista apunta al primer nodo de la lista.
  • 17. Lista doblemente enlazada circular •… primero El campo siguiente del último nodo apunte al primer nodo de la lista y el campo anterior del primer nodo apunte al último nodo de la lista.
  • 18. Ventajas y desventajas Ventajas No es preciso conocer la cantidad de elementos en tiempo de compilación. Ni las inserciones ni las eliminaciones implican realizar corrimientos de los elementos de la lista. Desventajas No permite el acceso directo a un elemento arbitrario de la lista. Para acceder al i-ésimo elemento, debemos recorrer la lista, comenzando por el primer nodo, hasta llegar al elemento deseado.
  • 19. primero Pila (tope) Una pila (stack) es un conjunto dinámico que obedece al orden LIFO. La pila es un caso particular de lista en la que todas las inserciones y extracciones de elementos se realizan por un solo extremo, llamado el tope de la pila.
  • 20. Operaciones en pilas Estas operaciones reciben nombres especiales: •Insertar (x). Inserta x en S. (Apilar o Push). •Tope. Devuelve el elemento que fue insertado más recientemente en S. (Cima). •Eliminar. Devuelve el elemento que fue insertado más recientemente y lo elimina. (Desapilar o Pop). •Vacía. Devolver si la pila está vacía.
  • 21. Cola primero Una cola (queue) es un conjunto dinámico que obedece al orden FIFO. La cola es un caso particular de lista para la que todas las inserciones se realizan siempre por un extremo y las extracciones se realizan siempre por el extremo opuesto. último
  • 22. Operaciones en colas Estas operaciones reciben nombres especiales: •Insertar (x). Inserta x en la cola. •Primero. Devuelve el elemento que lleva más tiempo en la cola. •Eliminar. Devuelve el elemento que lleva más tiempo en la cola y lo elimina. (Avanzar) •Vacía. Devolver si la cola está vacía.
  • 23. Ejemplos Un ejemplo de pila lo constituye el mecanismo que establecen los lenguajes de programación para garantizar las llamadas anidadas a subprogramas dentro de una aplicación. Un ejemplo de cola es la cola de impresión en el sistema operativo Windows. Cada usuario de una red de Windows coloca sus trabajos de impresión y el sistema lo imprime en el mismo orden en que fueron insertados en la cola de impresión.
  • 24. Cola secuencial ... 0 1 2 3 4 N-1 Índice del Índice del primer elemento último elemento Cantidad física de elementos
  • 25. Cola secuencial •No hay correspondencia entre la posición del último nodo y la cantidad de nodos de la cola. •La condición de cola llena y de cola vacía, no se pueden verificar haciendo uso del índice del arreglo.
  • 26. Cola circular 0 1 N-1 2 . . 3 13 4 12 5 11 6 10 7 9 8 La cola circular propone tratar el arreglo como un círculo donde cuando aLength se hace igual a aSize, el siguiente elemento es el de índice 0. Esto permite utilizar todos los espacios que quedan libres en el arreglo luego de realizar eliminaciones de nodos.
  • 27. Implementación en C++ •TBaseList •TSeqList •TLinkedList •TGSeqList •TGLinkedList •TDoubleList •TCircLinked •TNode •TDoubleCirc •TDoubleNode
  • 28. Facilidades de los lenguajes Los lenguajes de programación proporcionan utilidades que permiten al desarrollador crear estructuras de datos. Objetivo: proporcionar clases, interfaces y algoritmos para utilizar las estructuras de una manera estandar.