SlideShare una empresa de Scribd logo
1 de 37
TDA LISTA
Estructuras de Datos
CCPG1006
Objetivos
• Aprovechar la abstracción para definir comportamiento y luego
operaciones en nivel de implementación
• Visualizar las posibles implementaciones de un TDA ya definido
• Describir y dibujar la estructura de un LinkedList
• Describir la ventaja de usar LinkedList en lugar de ArrayList
TDA Lista
Definición
• Colección de 0 o más elementos
– Si la lista no tiene elementos, se dice que esta vacía
– Todos los elementos son de un mismo tipo
• Estructuras lineales
– Cada elemento de una lista se conoce con el nombre de NODO
– Los nodos están colocados uno detrás de otro
• Las listas
– Son mucho más flexibles que los arreglos
– Permiten trabajo “dinámico” con un grupo de elementos
– Crecen y se contraen a medida que se ejecuta el programa
Lista
Nivel lógico
• Comportamiento (a/con una lista se puede)
– Crear y Eliminar
– Conocer si esta vacía
– Añadir elementos y removerlos
– Consultar el primer y al último elemento
– Imprimir sus elementos en pantalla
– Buscar un elemento con cierta información en la lista
TDA Lista
Tipos de listas
• De acuerdo a su implementación, las listas se clasifican en:
– Simplemente Enlazadas
– Doblemente Enlazadas
– Circulares (Simplemente y Doblemente Enlazadas)
TDA Lista
Implementación
• Tenemos el concepto claro de lo que debe ser una lista
• ¿Cómo darle vida a una lista?
• Hay varias posibilidades de implementación
– Estática o Contigua, usando arreglos de longitud “variable” (ArrayList
en Java)
– Dinámica (LinkedList en Java)
TDA Lista
Java - Interfaz List
En java la interfaz List corresponde a la descripción del TDA Lista
TDA Lista
Java - Interfaz List
TDA Lista
Recordar
Interfaz especifica el comportamiento pero no la implementación
Implementación continua
ArrayList
• Utilizar un arreglo para implementar la interfaz List
– Secuencia de elementos
– Elementos continuos y adyacentes en memoria
– Cada elemento tiene un índice
• Se puede acceder directamente a una ubicación en particular
mediante el índice del arreglo
– Tiempo de acceso constante
• Al insertar o remover un elemento,
– Todos los elementos restantes avanzarán o retrocederán
10
0
5
1
8
2
2
3
31
4 5 6 7 8
En uso Desperdicio
25Al insertarse un
nuevo elemento,
en una cierta
posición, todos los
elementos
restantes ruedan
25
3
2
4 5 6 7 8
31
size
Capacidad
ensureCapacity
ArrayList
• ¿Cuánto tiempo toma recuperar un elemento de un ArrayList ?
• ¿Cuánto tiempo toma insertar un elemento al inicio de un ArrayList?
– O(1)?
– O(n)?
– O(n2)? t
O(f)
ArrayList
• El tiempo que toma recuperar un elemento en la implementación de
ArrayList es O(1)
– Los elementos están almacenados de forma continua en memoria
– Pueden ser accedidas con un índice que accede directamente a
cualquier elemento a un tiempo constante
• Para insertar un elemento, debe mover todos los valores siguientes. El
tiempo que se gasta copiando todos los valores depende linealmente del
tamaño del arreglo original
– O(n)
ArrayList
• ArrayList implementa List
• Un TDA no especifica la eficiencia con la que se debe implementar
• La Estructura de Dato que implementa el TDA establece la eficiencia en la
forma que lo hace
– ArrayList no es eficiente para insertar un nuevo elemento.
– ArrayList es eficiente para acceder elemento.
ArrayList
TDA Lista
Recordar
Interfaz especifica el comportamiento pero no la implementación
Doblemente Enlazadas
Diferencia entre usar ArrayList y
LinkedList
• ArrayList es eficiente para acceder a los
elementos.
• LinkedList es eficiente para agregar elementos.
• ArrayList y LinkedList tienen costos adicionales
para remover elementos.
• Cada nodo de la lista tiene
– Un contenido
• Información que almacena dentro y puede ser de cualquier tipo
de dato
– Un sucesor único
• Excepto el último nodo de la lista que hace referencia a null
<listaSimple> ::= <inicial> + {<ref_nodo>} + <final>
<inicial> ::= <enlace>
<final> ::= <enlace>
Lista Simplemente Enlazada
(memoria no adyacente)
• Es una implementación flexible y potente
• Los nodos ya no son adyacentes en memoria
– Un nodo A logra un enlace con otro B,
– Almacenando dentro la dirección de memoria de B
• Al insertar o eliminar un nodo ya no hay que “mover” al resto de
elemento, solo enlazarlo con la lista
Contenido Enlace
e n
e n
NODO A
NODO B
Lista Simplemente Enlazada
(memoria no adyacente)
10 5 8 2 31
25
25
2 3125
Lista Simplemente Enlazada
(memoria no adyacente)
TDA Nodo
Definición
• Una lista esta compuesta de nodos, y por eso es importante definir el
TDA Node
• Un nodo de una lista
– Almacena información de cualquier tipo
– Es capaz de “viajar” o conocer otro nodo (el nodo siguiente)
• Comportamiento
– Crear y Eliminar
– Consultar y modificar la información que almacena
– Consultar y modificar el enlace que mantiene con otro nodo
<nodo> ::= <contenido> + <enlace>
<contenido> ::= <dato>{<dato>}
<enlace> ::= <ref_nodo> | <ref_null>
• Contenido: Datos enteros, reales, o incluso, de Tipo: Estudiante, Auto,
etc....
• Y además, el nodo también contiene un enlace con su nodo siguiente
• Este enlace, puede no enlazar el nodo con nadie, el nodo esta solo, no forma
parte de ninguna lista
• O puede “apuntar” a otro nodo, indicando que ese es su siguiente, formando
una Lista
TDA Nodo
Nivel de implementación
TDA Nodo
• Un nodo almacena dentro
– Un contenido de cualquier tipo de dato, entero, real, estructuras,
etc......
– Un enlace, que es la referencia al nodo siguiente, la dirección del
nodo siguiente
• Una posible implementación sería:
TDA Nodo
Nivel de implementación
Crear
Node();
Consultar y Modificar Contenido
Object getData();
Consultar y Modificar Enlaces
Node getNext();
void setNext(Node n);
Nodo
Crear un nuevo nodo
Al crear un nodo se le asignará un valor inicial
Lista Simplemente Enlazada
Nivel de implementación
Llevar control de las posiciones al primer y el último elemento
Las posiciones son direcciones de memoria: referencias
head y tail ( primero y último) son referencias a Node en una lista
enlazada
La posición de un nodo estará dada por una referencia a dicho nodo
Una lista enlazada no tiene datos predefinidos
Los elementos o Nodos van siendo creados y eliminados a medida
que se va necesitando
Hay varias formas de definir una lista
– Solo a través del primer elemento a la misma
– Llevando control del primero y el último elemento,
– Almacenando el número de nodos y referencias al inicio y fin
– otros
Lista Simplemente Enlazada
Implementación
Lista Simplemente Enlazada
Operaciones
• Crear
– SimpleLinkedList()
• Consultar Primer y Ultimo
– NodeList getFirst();
– NodeList getLast();
• Conocer Estado
– bool isEmpty();
• Añadir y Remover
– bool insertFirst(NodeList node);
– bool insertLast(NodeList node);
– bool insert(NodeList node, NodeList newNode);
– NodeList removeFirst();
– NodeList removeLast();
– bool removeNode(NodeList node);
• Busqueda
– NodeList search(Object o);
– bool exist(NodeList node);
Lista Simplemente Enlazada
Búsqueda
• Hay que ubicarse en el inicio: first
• E ir avanzando hasta
– Encontrar el nodo con la información buscada
o
– Que ya no haya más nodos
• Como no se usan índices, se usan
referencias:
– Una referencia se ubicará en el primero
– Avanzar al siguiente, y al siguiente y al
siguiente
• Al encontrar al nodo buscado, no se retorna
su posición como índice, esta no importa, se
retorna la referencia (dirección) de este
nodo
10 5 8 2 3125
lastfirst
Busco 25
p p p pp
Busco 30
p p p p p
p
Lista Simplemente Enlazada
Anterior
• Dada la dirección de un nodo(pos), esta función retorna la dirección del nodo
anterior
• Hay que “buscar” desde el inicio
• El nodo buscado es aquel cuyo siguiente es igual a pos
• Si el elemento buscado es el primero en la lista, no hay anterior
10 5 8 2 3125
lastfirst
pq q q
7
p
La posición
p es la de
un nodo
fuera de la
lista
q q q q q q
q
Lista Simplemente Enlazada
Primero y Último
• Se pueden obtener siempre y cuando la lista no este vacía
• Retornan la información del elemento apuntado por first y last
respectivamente.
Lista Simplemente Enlazada
Insertar
• La operación de insertar recibirá
– El NODO que se va a insertar
– Este nodo ya debió haber sido creado antes de insertarlo
• Hay varios tipos de inserción
– Insertar al inicio o al final
– Insertar en medio de la lista
10 5 8 2 3125
lastfirst
Lista Simplemente Enlazada
Inserción al inicio/final
9
nuevo
first
nuevo.next = first;
first = nuevo;
18
nuevo
last.next = nuevo;
last
last = nuevo;
Si la lista esta vacía, tanto first como last apuntan al nuevo nodo
Si no, si es al inicio el nuevo valor de first, es el nuevo nodo
Si no, si es al final, el nuevo valor de last es el nuevo nodo
Lista Simplemente Enlazada
Insertar en medio
• Debe recibir la posición donde se
va a insertar
• Insertemos después
– Si la posición no existe no
efectuar la inserción
– Si la lista solo tiene un
elemento, el nuevo last es el
nuevo nodo
10 5 8 2 3125
first lastp
18
newNode
newNode.next = p.next;p.next = newNode;
Lista Simplemente Enlazada
Remover de la lista (inicio o al final)
La lista no debe estar vacía!!, si tiene un solo elemento, dejarla vacía
10 5 8 2 3125
first last
tmp
tmp = first;
first
first = first.next;
tmp
tmp = last;
last
last = previous(last);
last.next = null;
tmp.next = null;
Lista Simplemente Enlazada
Remover un nodo
• Lista no debe estar vacía
• La posición enviada debe existir
en la lista
• Revisar si se desea eliminar el
first o el last
10 5 8 2 3125
first lastp
prevprev = getPrevious(p);
prev.next = p.next;
p.next = null;
Lista Simplemente Enlazada
Visualizar
Imprimir todos los nodos de la lista
void print(){
NodeList temp;
for(temp = this.first; temp != null; temp = temp.next)
System.out.println(temp.data);
}
Lista Simplemente Enlazada
Operaciones
• Crear
– SinglyLinkedList()
• Consultar primero, último y tamaño
– E first();
– E last();
– int size();
• Conocer Estado
– bool isEmpty();
• Añadir y Remover
– void addFirst(E e);
– void addLast(E e);
– bool add(int i, E e);
– E removeFirst();
– E removeLast();
• Búsqueda
– int indexOf(E e);
– bool contains (E e);

Más contenido relacionado

La actualidad más candente

Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmosRobert Rodriguez
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaAngel Vázquez Patiño
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y NodosBoris Salleg
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersiónAngel Vázquez Patiño
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
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
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colasAmaury Pascal
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completoBoris Salleg
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Aplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datosAplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datosK Manuel TN
 
Estructura de datos evidencias
Estructura de datos evidenciasEstructura de datos evidencias
Estructura de datos evidenciaslenithoz
 
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
 

La actualidad más candente (18)

Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmos
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Tda y heaps
Tda y heapsTda y heaps
Tda y heaps
 
Teoria de listas
Teoria de listasTeoria de listas
Teoria de listas
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Unidad 3 Listas Java
Unidad 3 Listas JavaUnidad 3 Listas Java
Unidad 3 Listas Java
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en java
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como 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
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colas
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Aplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datosAplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datos
 
Estructura de datos evidencias
Estructura de datos evidenciasEstructura de datos evidencias
Estructura de datos evidencias
 
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
 

Similar a 05 listas1 t2018 (20)

Listas
ListasListas
Listas
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Listas encadenadas
Listas encadenadas Listas encadenadas
Listas encadenadas
 
Estructura de dato unidad 3
Estructura de dato unidad 3Estructura de dato unidad 3
Estructura de dato unidad 3
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colas
 
06 listas1 t2018
06 listas1 t201806 listas1 t2018
06 listas1 t2018
 
LISTAS
LISTASLISTAS
LISTAS
 
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
 
Sesion_09.pptx
Sesion_09.pptxSesion_09.pptx
Sesion_09.pptx
 
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 Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdf
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose Tannous
 
Presentacion Lista, Cola y Pila
Presentacion Lista, Cola y PilaPresentacion Lista, Cola y Pila
Presentacion Lista, Cola y Pila
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Lista enlazada
Lista enlazadaLista enlazada
Lista enlazada
 

Más de Cindy Adriana Bohórquez Santana

265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...
265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...
265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...Cindy Adriana Bohórquez Santana
 
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLCindy Adriana Bohórquez Santana
 

Más de Cindy Adriana Bohórquez Santana (20)

Proyecto parcial1t2018
Proyecto parcial1t2018Proyecto parcial1t2018
Proyecto parcial1t2018
 
265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...
265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...
265306183 ecolog-a-impacto-de-la-problem-tica-ambiental-actual-sobre-la-salud...
 
20152 sfiec030121 1
20152 sfiec030121 120152 sfiec030121 1
20152 sfiec030121 1
 
4 estructuras enlazadas
4 estructuras enlazadas4 estructuras enlazadas
4 estructuras enlazadas
 
12 conjuntos mapas1t2018
12 conjuntos mapas1t201812 conjuntos mapas1t2018
12 conjuntos mapas1t2018
 
11 colas prioridad1t2018
11 colas prioridad1t201811 colas prioridad1t2018
11 colas prioridad1t2018
 
10 colas1 t2018
10 colas1 t201810 colas1 t2018
10 colas1 t2018
 
09 pilas aplicaciones1t2018
09 pilas aplicaciones1t201809 pilas aplicaciones1t2018
09 pilas aplicaciones1t2018
 
08 pilas1 t2018
08 pilas1 t201808 pilas1 t2018
08 pilas1 t2018
 
04 recursividad1 t2018
04 recursividad1 t201804 recursividad1 t2018
04 recursividad1 t2018
 
03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
02 tda1 t2018
02 tda1 t201802 tda1 t2018
02 tda1 t2018
 
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOSUnidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
 
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
Unidad 2 Sintaxis en java
Unidad 2 Sintaxis en javaUnidad 2 Sintaxis en java
Unidad 2 Sintaxis en java
 
Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 
Teoria basica probabilidad_2015_4_ed
Teoria basica probabilidad_2015_4_edTeoria basica probabilidad_2015_4_ed
Teoria basica probabilidad_2015_4_ed
 
Tema3 probabilidades
Tema3 probabilidadesTema3 probabilidades
Tema3 probabilidades
 
Ejercicios calculo probabilidades
Ejercicios calculo probabilidadesEjercicios calculo probabilidades
Ejercicios calculo probabilidades
 

Último

Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...esandoval7
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasLeonardoMendozaDvila
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresSegundo Silva Maguiña
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxJairReyna1
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxHarryArmandoLazaroBa
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...humberto espejo
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 

Último (20)

Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y Vectores
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptx
 
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdfMATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdf
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptx
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 

05 listas1 t2018

  • 1. TDA LISTA Estructuras de Datos CCPG1006
  • 2. Objetivos • Aprovechar la abstracción para definir comportamiento y luego operaciones en nivel de implementación • Visualizar las posibles implementaciones de un TDA ya definido • Describir y dibujar la estructura de un LinkedList • Describir la ventaja de usar LinkedList en lugar de ArrayList
  • 3. TDA Lista Definición • Colección de 0 o más elementos – Si la lista no tiene elementos, se dice que esta vacía – Todos los elementos son de un mismo tipo • Estructuras lineales – Cada elemento de una lista se conoce con el nombre de NODO – Los nodos están colocados uno detrás de otro • Las listas – Son mucho más flexibles que los arreglos – Permiten trabajo “dinámico” con un grupo de elementos – Crecen y se contraen a medida que se ejecuta el programa
  • 4. Lista Nivel lógico • Comportamiento (a/con una lista se puede) – Crear y Eliminar – Conocer si esta vacía – Añadir elementos y removerlos – Consultar el primer y al último elemento – Imprimir sus elementos en pantalla – Buscar un elemento con cierta información en la lista
  • 5. TDA Lista Tipos de listas • De acuerdo a su implementación, las listas se clasifican en: – Simplemente Enlazadas – Doblemente Enlazadas – Circulares (Simplemente y Doblemente Enlazadas)
  • 6. TDA Lista Implementación • Tenemos el concepto claro de lo que debe ser una lista • ¿Cómo darle vida a una lista? • Hay varias posibilidades de implementación – Estática o Contigua, usando arreglos de longitud “variable” (ArrayList en Java) – Dinámica (LinkedList en Java)
  • 7. TDA Lista Java - Interfaz List En java la interfaz List corresponde a la descripción del TDA Lista
  • 8. TDA Lista Java - Interfaz List
  • 9. TDA Lista Recordar Interfaz especifica el comportamiento pero no la implementación
  • 10. Implementación continua ArrayList • Utilizar un arreglo para implementar la interfaz List – Secuencia de elementos – Elementos continuos y adyacentes en memoria – Cada elemento tiene un índice • Se puede acceder directamente a una ubicación en particular mediante el índice del arreglo – Tiempo de acceso constante • Al insertar o remover un elemento, – Todos los elementos restantes avanzarán o retrocederán
  • 11. 10 0 5 1 8 2 2 3 31 4 5 6 7 8 En uso Desperdicio 25Al insertarse un nuevo elemento, en una cierta posición, todos los elementos restantes ruedan 25 3 2 4 5 6 7 8 31 size Capacidad ensureCapacity ArrayList
  • 12. • ¿Cuánto tiempo toma recuperar un elemento de un ArrayList ? • ¿Cuánto tiempo toma insertar un elemento al inicio de un ArrayList? – O(1)? – O(n)? – O(n2)? t O(f) ArrayList
  • 13. • El tiempo que toma recuperar un elemento en la implementación de ArrayList es O(1) – Los elementos están almacenados de forma continua en memoria – Pueden ser accedidas con un índice que accede directamente a cualquier elemento a un tiempo constante • Para insertar un elemento, debe mover todos los valores siguientes. El tiempo que se gasta copiando todos los valores depende linealmente del tamaño del arreglo original – O(n) ArrayList
  • 14. • ArrayList implementa List • Un TDA no especifica la eficiencia con la que se debe implementar • La Estructura de Dato que implementa el TDA establece la eficiencia en la forma que lo hace – ArrayList no es eficiente para insertar un nuevo elemento. – ArrayList es eficiente para acceder elemento. ArrayList
  • 15. TDA Lista Recordar Interfaz especifica el comportamiento pero no la implementación Doblemente Enlazadas
  • 16. Diferencia entre usar ArrayList y LinkedList • ArrayList es eficiente para acceder a los elementos. • LinkedList es eficiente para agregar elementos. • ArrayList y LinkedList tienen costos adicionales para remover elementos.
  • 17. • Cada nodo de la lista tiene – Un contenido • Información que almacena dentro y puede ser de cualquier tipo de dato – Un sucesor único • Excepto el último nodo de la lista que hace referencia a null <listaSimple> ::= <inicial> + {<ref_nodo>} + <final> <inicial> ::= <enlace> <final> ::= <enlace> Lista Simplemente Enlazada (memoria no adyacente)
  • 18. • Es una implementación flexible y potente • Los nodos ya no son adyacentes en memoria – Un nodo A logra un enlace con otro B, – Almacenando dentro la dirección de memoria de B • Al insertar o eliminar un nodo ya no hay que “mover” al resto de elemento, solo enlazarlo con la lista Contenido Enlace e n e n NODO A NODO B Lista Simplemente Enlazada (memoria no adyacente)
  • 19. 10 5 8 2 31 25 25 2 3125 Lista Simplemente Enlazada (memoria no adyacente)
  • 20. TDA Nodo Definición • Una lista esta compuesta de nodos, y por eso es importante definir el TDA Node • Un nodo de una lista – Almacena información de cualquier tipo – Es capaz de “viajar” o conocer otro nodo (el nodo siguiente) • Comportamiento – Crear y Eliminar – Consultar y modificar la información que almacena – Consultar y modificar el enlace que mantiene con otro nodo <nodo> ::= <contenido> + <enlace> <contenido> ::= <dato>{<dato>} <enlace> ::= <ref_nodo> | <ref_null>
  • 21. • Contenido: Datos enteros, reales, o incluso, de Tipo: Estudiante, Auto, etc.... • Y además, el nodo también contiene un enlace con su nodo siguiente • Este enlace, puede no enlazar el nodo con nadie, el nodo esta solo, no forma parte de ninguna lista • O puede “apuntar” a otro nodo, indicando que ese es su siguiente, formando una Lista TDA Nodo Nivel de implementación
  • 22. TDA Nodo • Un nodo almacena dentro – Un contenido de cualquier tipo de dato, entero, real, estructuras, etc...... – Un enlace, que es la referencia al nodo siguiente, la dirección del nodo siguiente • Una posible implementación sería:
  • 23. TDA Nodo Nivel de implementación Crear Node(); Consultar y Modificar Contenido Object getData(); Consultar y Modificar Enlaces Node getNext(); void setNext(Node n);
  • 24. Nodo Crear un nuevo nodo Al crear un nodo se le asignará un valor inicial
  • 25. Lista Simplemente Enlazada Nivel de implementación Llevar control de las posiciones al primer y el último elemento Las posiciones son direcciones de memoria: referencias head y tail ( primero y último) son referencias a Node en una lista enlazada La posición de un nodo estará dada por una referencia a dicho nodo Una lista enlazada no tiene datos predefinidos Los elementos o Nodos van siendo creados y eliminados a medida que se va necesitando
  • 26. Hay varias formas de definir una lista – Solo a través del primer elemento a la misma – Llevando control del primero y el último elemento, – Almacenando el número de nodos y referencias al inicio y fin – otros Lista Simplemente Enlazada Implementación
  • 27. Lista Simplemente Enlazada Operaciones • Crear – SimpleLinkedList() • Consultar Primer y Ultimo – NodeList getFirst(); – NodeList getLast(); • Conocer Estado – bool isEmpty(); • Añadir y Remover – bool insertFirst(NodeList node); – bool insertLast(NodeList node); – bool insert(NodeList node, NodeList newNode); – NodeList removeFirst(); – NodeList removeLast(); – bool removeNode(NodeList node); • Busqueda – NodeList search(Object o); – bool exist(NodeList node);
  • 28. Lista Simplemente Enlazada Búsqueda • Hay que ubicarse en el inicio: first • E ir avanzando hasta – Encontrar el nodo con la información buscada o – Que ya no haya más nodos • Como no se usan índices, se usan referencias: – Una referencia se ubicará en el primero – Avanzar al siguiente, y al siguiente y al siguiente • Al encontrar al nodo buscado, no se retorna su posición como índice, esta no importa, se retorna la referencia (dirección) de este nodo 10 5 8 2 3125 lastfirst Busco 25 p p p pp Busco 30 p p p p p p
  • 29. Lista Simplemente Enlazada Anterior • Dada la dirección de un nodo(pos), esta función retorna la dirección del nodo anterior • Hay que “buscar” desde el inicio • El nodo buscado es aquel cuyo siguiente es igual a pos • Si el elemento buscado es el primero en la lista, no hay anterior 10 5 8 2 3125 lastfirst pq q q 7 p La posición p es la de un nodo fuera de la lista q q q q q q q
  • 30. Lista Simplemente Enlazada Primero y Último • Se pueden obtener siempre y cuando la lista no este vacía • Retornan la información del elemento apuntado por first y last respectivamente.
  • 31. Lista Simplemente Enlazada Insertar • La operación de insertar recibirá – El NODO que se va a insertar – Este nodo ya debió haber sido creado antes de insertarlo • Hay varios tipos de inserción – Insertar al inicio o al final – Insertar en medio de la lista
  • 32. 10 5 8 2 3125 lastfirst Lista Simplemente Enlazada Inserción al inicio/final 9 nuevo first nuevo.next = first; first = nuevo; 18 nuevo last.next = nuevo; last last = nuevo; Si la lista esta vacía, tanto first como last apuntan al nuevo nodo Si no, si es al inicio el nuevo valor de first, es el nuevo nodo Si no, si es al final, el nuevo valor de last es el nuevo nodo
  • 33. Lista Simplemente Enlazada Insertar en medio • Debe recibir la posición donde se va a insertar • Insertemos después – Si la posición no existe no efectuar la inserción – Si la lista solo tiene un elemento, el nuevo last es el nuevo nodo 10 5 8 2 3125 first lastp 18 newNode newNode.next = p.next;p.next = newNode;
  • 34. Lista Simplemente Enlazada Remover de la lista (inicio o al final) La lista no debe estar vacía!!, si tiene un solo elemento, dejarla vacía 10 5 8 2 3125 first last tmp tmp = first; first first = first.next; tmp tmp = last; last last = previous(last); last.next = null; tmp.next = null;
  • 35. Lista Simplemente Enlazada Remover un nodo • Lista no debe estar vacía • La posición enviada debe existir en la lista • Revisar si se desea eliminar el first o el last 10 5 8 2 3125 first lastp prevprev = getPrevious(p); prev.next = p.next; p.next = null;
  • 36. Lista Simplemente Enlazada Visualizar Imprimir todos los nodos de la lista void print(){ NodeList temp; for(temp = this.first; temp != null; temp = temp.next) System.out.println(temp.data); }
  • 37. Lista Simplemente Enlazada Operaciones • Crear – SinglyLinkedList() • Consultar primero, último y tamaño – E first(); – E last(); – int size(); • Conocer Estado – bool isEmpty(); • Añadir y Remover – void addFirst(E e); – void addLast(E e); – bool add(int i, E e); – E removeFirst(); – E removeLast(); • Búsqueda – int indexOf(E e); – bool contains (E e);