Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema: Listas
Tema 2: Listas
Contenido
• Tipo de Dato Abstracto (TDA).
• Listas lineales.
• Tipos de implementaciones de listas.
• Pilas y Colas.
• Implementación en C++ y Java.
ib lio
gr a f ía
Bibliografía
B
...
1 2 3 4 5 N
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.
primero
primero
•…
primero
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)
último
Operaciones en colas
Estas operaciones reciben nombres especiales:
•Insertar (x). Inserta x en la cola.
...
0 1 2 3 4 N-1
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.
13 4
12 5
11 6
10 7
9 8
•TSeqList •TLinkedList
•TGSeqList •TGLinkedList
•TDoubleList •TCircLinked
•TNode
•TDoubleCirc
•TDoubleNode
Iteradores en Java
Los iteradores son objetos que contienen referencias a
los elementos en la estructura de datos para atravesar
esta estructura.
Iteradores en Java
class ListIterator {
private Node aCursor;
private Node aPrevios;
private LinkedList aList;
public ListIterator(LinkedList list) {
aList = list;
reset();
}
public void reset(){
aCursor = aLIst.getFirst();
aprevios = null;
}
public void nextNode() {
aPrevios = aCursor;
aCursor = cursor.aNext;
}
…
}
Iteradores en Java
class ListIterator {
…
public Node getCursor() {
return aCursor;
}
public boolean atEnd() {
return (aCursor.aNext == null);
}
}
Iteradores en Java
class ListIterator {
…
public void insertAfter(int 2) {
Node node = new Node(3);
if (aList.isEmpty()) {
aList.setFirst(node);
aCursor =node;
}
else {
node.aNext = aCursor.aNext;
aCursos.aNext = node;
nextNode();
}
}
}
Iteradores en Java
Agregar un método a LinkedList
class LinkedList {
…
public ListIterator getIterator() {
return new ListIterator(this);
}
}
Iteradores en Java
public static void main(String[] args){
LinKedList list = new LinkedList();
ListIterator it = list.getIterator();
it.insertAfter(21);
it.insertAfter(8);
it.insertAfter(24);
list.displayList();
}
Facilidades de los lenguajes
Los lenguajes de programación proporcionan utilidades
que permiten al desarrollador crear estructuras de
datos.
Collection Map
SortedSet
List
ArrayList LinkedList
Clases ArrayList y LinkedList
ArrayList: No tiene ningún método sincronizado
(soporta el acceso concurrente a los datos).