Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1-Listas Es PDF
1-Listas Es PDF
Programacin de Sistemas
1
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
Estructuras de datos lineales
Organizan los datos en secuencia, donde cada
dato se relaciona con un dato anterior (excepto el
primero) y un dato posterior (excepto el ltimo)
Ejemplos de estructuras de datos lineales:
Arrays
Listas enlazadas
Pilas
Colas
Colas dobles
3
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.
4
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
Necesidad de memoria contigua:
Puede ocurrir que, pese a haber suficiente memoria libre, no
haya un bloque contiguo suficientemente grande
5
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.
6
Listas enlazadas
Secuencia ordenada de nodos donde cada
nodo almacena:
Un dato
Una referencia al siguiente nodo
Los nodos no tienen por qu estar contiguos
en memoria
first
8
Insercin al principio
first
null
newNode
null
9
Insercin al principio
first
null
newNode
newNode .setNext(first);
10
Insercin al principio
first
null
newNode
first = newNode;
11
Extraccin del primer nodo
first
null
12
Extraccin del primer nodo
first
null
data
13
Extraccin del primer nodo
first
null
data
first = first.getNext();
14
Extraccin del primer dato
first
null
data
15
Insercin en un punto intermedio
previous
first
null
newNode
null
16
Insercin en un punto intermedio
previous
first
null
newNode
newNode.setNext(previous.getNext())
17
Insercin en un punto intermedio
previous
first
null
newNode
previous.setNext(newNode)
18
Eliminacin de un dato intermedio
previous
first
null
19
Eliminacin de un dato intermedio
previous data
first
null
20
Eliminacin de un dato intermedio
previous data
first
null
previous.setNext(previous.getNext().getNext())
21
Eliminacin de un dato intermedio
previous data
first
null
22
current
Recorrido de la lista
first
null
23
Recorrido: buscar el ltimo nodo
Se avanza una referencia hasta localizar un
nodo cuyo siguiente sea null:
27