![Page 1: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/1.jpg)
Estructuras de Datos y Algoritmos
TDA
LISTA
![Page 2: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/2.jpg)
Metáfora del TDA(repaso)
• Conjunto de operaciones forman una pared
• forman una interfase entre los programas y la estructura de datos
![Page 3: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/3.jpg)
Diseño de una Clase(repaso)
![Page 4: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/4.jpg)
¿Qué es una Lista?
Ejemplo 1. ARENAS ALICEA, ALEXIS
2. CASANOVA DEL MORAL, LISA R
3. COLON VELEZ, MIGUEL A
4. GAMBOA NIEVES, EXEL
5. HERNANDEZ VIERA, MARIAN
6. JAIME COLLAZO, ASTRID M
7. MEDINA RIVERA, LUIS A
8. MUNOZ HERNANDEZ, JOSE L
9. NAVARRO LOPEZ, AIDA Y.
10. PASSAPERA SANCHEZ, LIANETTE
11. QUILES LOPEZ, JUAN
12. REYES COLON, JUAN C
13. REYES TORRES, JENNY
14. ROSADO MILLAN, ARELIS
15. SANTIAGO APONTE, MARIA M
16. TORRES VELAZQUEZ, DORCI LEE
![Page 5: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/5.jpg)
Abstracción
Características que tiene toda lista:
• tiene algo o está vacía
si tiene algo...
• Tiene una cantidad finita de elementos
• Tiene un primer elemento
• tiene un último elemento
• cada elemento tiene una posición
• cada elemento tiene un sucesor (excepto el último)
• cada elemento tiene un predecesor (excepto el primero)
![Page 6: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/6.jpg)
TDA Lista
Una Lista es una colección lineal de objetos con las siguientes operaciones:
• crear una lista vacía• detrminar si la lista está vacía• determinar cantidad de elementos• añadir item en determinada posición• elininar iten de determinada posición• ver el item en una posición dada
![Page 7: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/7.jpg)
Interfacesuna manera de representar un TDA en Java
public interface ListInterface {
public boolean isEmpty();
public int size();
public void add(int index, Object item);
public Object get(int index) ;
public void remove(int index);
public void removeAll();
} // end ListInterface
![Page 8: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/8.jpg)
¿Qué falta?
• Estructura de Datos– hay distintas opciones– podemos seleccionar un arreglo para guardar
los items y un entero para saber cuantos items hay
• Algoritmos– dependen de la ED que se haya seleccionado
![Page 9: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/9.jpg)
Una implantación con arreglos
public class ListArrayBased implements ListInterface {
private static final int MAX_LIST = 50;
private Object items[]; // an array of list items
private int numItems; // number of items in list
public ListArrayBased() {
items = new Object[MAX_LIST];
numItems = 0;
} // end default constructor
![Page 10: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/10.jpg)
public boolean isEmpty() {return (numItems == 0);}
public int size() {return numItems;} // end size
public void add(int index, Object item) {
if (numItems <= MAX_LIST) {
if (index >= 1 && index <= numItems+1) {
for (int pos = numItems; pos >= index; pos--) {
items[translate(pos+1)] = items[translate(pos)];
} // end for
items[translate(index)] = item;
numItems++;
}
} // end if
} // end if
} //end add
![Page 11: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/11.jpg)
public Object get(int index) { if (index >= 1 && index <= numItems) { return items[translate(index)]; } // end if } // end get public void remove(int index) { if (index >= 1 && index <= numItems) { for (int pos = index+1; pos <= size(); pos++) { items[translate(pos-1)] = items[translate(pos)]; } // end for numItems--; } // end if } //end remove} // end ListArrayBased
![Page 12: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/12.jpg)
Ilustración de add(3,44)
k
numItems
12 3 19 100 ... 5 10 ¿? ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 13: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/13.jpg)
Ilustración de add(3,44)
k
numItems
12 3 19 100 ... 5 10 ¿? ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 14: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/14.jpg)
Ilustración de add(3,44)
k
numItems
12 3 19 100 ... 5 10 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 15: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/15.jpg)
Ilustración de add(3,44)
k
numItems
12 3 19 100 ... 5 10 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 16: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/16.jpg)
Ilustración de add(3,44)
k
numItems
12 3 19 100 ... 5 5 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 17: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/17.jpg)
Ilustración de add(3,44)
k
numItems
12 3 19 19 ...100 5 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 18: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/18.jpg)
Ilustración de add(3,44)
k
numItems
12 3 44 19 ...100 5 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
![Page 19: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/19.jpg)
Ilustración de add(3,44)
k
numItems
12 3 44 19 ...100 5 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA 44
Sumar 1
![Page 20: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/20.jpg)
Ilustración de add(3,44)
K+1
numItems
12 3 44 19 ...100 5 10 ... ¿?
0 1 2 3 ... K-1 MAX
Índices del arreglo
1 2 3 4 k
Posiciones del TDA
![Page 21: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/21.jpg)
Ventajas y Desventajasde la implantación de listas con arreglos
• Ventajas–relativamente fácil
–ED arrego es parecido a TDA lista
• Desventajas–se llena
–hay que estar rodándolo
![Page 22: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/22.jpg)
Listas enlazadasTDA Nodo
Un Nodo es un par información y vínculo al próximo nodo con las siguientes operaciones:– constructor– setItem(x): pone x en el campo de información– setNext(n): pone n en el vínculo al próximo– getItem(): devuelve campo de información– getNext(): devuelve referencia al próximo
info
![Page 23: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/23.jpg)
Listas enlazadasImplantación de Nodo
public class Node {
private Object item;
private Node next;
public Node(Object newItem) {
item = newItem;
next = null;
} // end constructor
public Node(Object newItem, Node nextNode) {
item = newItem;
next = nextNode;
} // end constructor
public void setItem(Object newItem) { item = newItem; } // end setItem
public Object getItem() { return item; } // end getItem
public void setNext(Node nextNode) { next = nextNode; } // end setNext
public Node getNext() { return next; } // end getNext} // end class Node
![Page 24: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/24.jpg)
Listas enlazadas
Implantación
![Page 25: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/25.jpg)
public class ListReferenceBased implements ListInterface {
// reference to linked list of items
private Node head;
private int numItems; // number of items in list
//c ListReferenceBased(), isEmpty(), size()
private Node find(int index) {
Node curr = head;
for (int skip = 1; skip < index; skip++) {
curr = curr.getNext();
} // end for
return curr;
} // end find
public Object get(int index) {
if (index >= 1 && index <= numItems) {
// get reference to node, then data in node
Node curr = find(index);
Object dataItem = curr.getItem();
return dataItem;
}
else {
System.out.println(
"List index out of bounds exception on get");
} // end if
} // end get
![Page 26: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/26.jpg)
public void add(int index, Object item) { if (index >= 1 && index <= numItems+1) { if (index == 1) { // insert the new node containing item at // beginning of list Node newNode = new Node(item, head); head = newNode; } else { Node prev = find(index-1); // insert the new node containing item after // the node that prev references Node newNode = new Node(item, prev.getNext()); prev.setNext(newNode); } // end if numItems++; } else { System.out.println( "List index out of bounds exception on add"); } // end if } // end add
![Page 27: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/27.jpg)
Insertar nodosilustración
![Page 28: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/28.jpg)
public void remove(int index) {
if (index >= 1 && index <= numItems) {
if (index == 1) {
// delete the first node from the list
head = head.getNext();
}
else {
Node prev = find(index-1);
// delete the node after the node that prev
// references, save reference to node
Node curr = prev.getNext();
prev.setNext(curr.getNext());
} // end if
numItems--;
} // end if
else {
System.out.println("List index out of bounds exception on remove");
} // end if
} // end remove
![Page 29: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/29.jpg)
Borrar nodosilustración
![Page 30: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/30.jpg)
Análisis de ambas implantaciones
Con Arreglos.
Suponer que hay N elementos en la lista
• añadir(k,x)– hay que rodar los que están de k en adelante– el peor caso es cuando k=1– en ese caso hay que mover N cosas– hay otras 4 instrucciones fuera del ciclo– total de instrucciones en el peor caso: N+4
![Page 31: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/31.jpg)
Análisis de ambas implantaciones
Con Arreglos
• Delete(k)– hay que rodar los elementos desde después de
la posición k– el peor caso es k=1– en ese caso hay que mover N-1 cosas– hay otras 2 instrucciones fuera del ciclo– total de instrucciones en el peor caso: N+1
![Page 32: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/32.jpg)
Análisis de ambas implantaciones
Con listas enlazadas
• Add(k,x)– hay moverse de nodo en nodo hasta la posición k– el peor caso es k=n– en ese caso hay que moverse N-1 veces– hay otras 3 instrucciones fuera del ciclo– total de instrucciones en el peor caso: N+2
![Page 33: Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas](https://reader031.vdocuments.pub/reader031/viewer/2022020920/551cf3b4550346357a8b5511/html5/thumbnails/33.jpg)
Análisis de ambas implantaciones
Con listas enlazadas
• Remove(k,x)– hay moverse de nodo en nodo hasta la posición k– el peor caso es k=n– en ese caso hay que moverse N-1 veces– hay otras 3 instrucciones fuera del ciclo– total de instrucciones en el peor caso: N+2