Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1-Listas Es
1-Listas Es
Programacin de Sistemas
Estructuras de datos
Abstraccin que representa un conjunto de datos en un programa con el objeto de facilitar su manipulacin Diferentes estructuras de datos presentan ventajas o desventajas dependiendo de la naturaleza de los datos y los tipos de manipulaciones que se necesite hacer sobre los mismos
2
Arrays
Los arrays presentan dos grandes ventajas para el almacenamiento de colecciones lineales de datos:
Acceso aleatorio: se puede acceder a cualquier posicin del array en tiempo constante. Uso eficiente de memoria cuando todas las posiciones estn ocupadas: por guardarse en posiciones consecutivas de memoria.
Arrays
Desventajas:
Tamao esttico: debe asignarse un tamao al crear el array, y no se puede cambiar. Da lugar a problemas:
Uso no eficiente de memoria por tener que reservar espacio para el caso peor Posibilidad de sobrepasar el tamao reservado en tiempo de ejecucin
Arrays
Desventajas:
Ciertas operaciones tienen un coste no ptimo:
Inserciones y eliminaciones de datos en la primera posicin o posiciones intermedias: necesidad de desplazar datos entre posiciones consecutivas. Concatenacin de dos o ms arrays: necesidad de copiar los datos a un nuevo array. Particin de un array en varios fragmentos: necesidad de copiar datos a nuevos arrays.
Listas enlazadas
Secuencia ordenada de nodos donde cada nodo almacena:
Un dato Una referencia al siguiente nodo
La clase Node
Public class Node { private Object info; private Node next; public Node(Object info) {} public public public public } Node getNext() {} void setNext(Node next) {} Object getInfo() {} void setInfo(Object info) {}
Insercin al principio
first
newNode
null
null
Insercin al principio
first
newNode
null
newNode .setNext(first);
10
Insercin al principio
first
newNode
null
first = newNode;
11
null
12
null
data
null
data
first = first.getNext();
14
null
data
15
newNode
null
null
newNode
null
newNode.setNext(previous.getNext())
17
newNode
null
previous.setNext(newNode)
18
null
19
null
null
previous.setNext(previous.getNext().getNext())
21
null
22
current
first
Recorrido de la lista
null
23
25
27