Académique Documents
Professionnel Documents
Culture Documents
Unidad II
ESTRUCTURAS LINEALES
Competencias
Temas
2.1. 2.2. 2.3. 2.4. Listas. Pilas estticas y dinmicas. Colas estticas y dinmicas. Aplicaciones.
Bibliografa
Estructura de datos y organizacin de archivos. Mary E. S. Loomis
Pilas (Captulo 4 pgs. 57-61, 64-71) Colas (Captulo 5 pgs. 78-82, 85-97)
Bibliografa
Cmo programar en Java Deitel y Deitel
(Todos los temas sobre conceptos bsicos de programacin)
inicio
A inicio A 9 G 5 H 15 NULL C D NULL
inicio
A inicio
NULL
A01
A02
. .
NULL
F05
F06
. .
A
9F7
inicio
9F7
9F8
A01
Se puede referenciar a cualquier elemento de la lista. El valor NULL sirve para indicar que NO hace referencia a algn lugar de la memoria. Cuando la lista an NO tiene nodos (vaca), inicio se inicializa con null (inicio = null).
A inicio
M fin
NULL
A01
M
. .
A02
F05 F06
NULL
A
fin
. .
9F7
inicio
9F7
9F8 999
. .
T
A01 FFF
Un espacio para la referencia o direccin. No poder acceder directamente a un elemento de la lista, a travs de un ndice.
Son las listas en las que sus nodos estn enlazados nicamente con una liga. El recorrido de la lista es eficiente cuando se hace hacia un solo sentido de la misma.
Ejemplo de inicializacin de la lista: Nodo inicio; inicio = new Nodo(20,null); Con estas instrucciones se pone a inicio en el nodo que se solicit (el primero). El nodo tiene en dato 20 y en siguiente null.
inicio
temp
20
NULL
temp
inicio
temp
NULL
inicio
NULL
temp
temp
inicio
temp
inicio
20
NULL
inicio
temp
inicio
temp
NULL
inicio
temp
NULL
inicio
NULL
inicio
inicio.siguiente.dato=9; inicio.siguiente.siguiente=null;
NULL
temp
inicio
temp = inicio;
La bsqueda consiste en hacer un recorrido secuencial desde el inicio de la lista hasta encontrar el elemento buscado. La comparacin se hace entre el dato a buscar y el dato del nodo visitado.
El listado consiste en realizar un recorrido secuencial de la lista e ir mostrando los elementos de los nodos que se desean.
2.2 Pilas
Definicin: Es un TDA (Tipo de Dato Abstracto) Es un caso especial de una lista lineal en el cual, la insercin (push) y eliminacin (pop) son operaciones que solo pueden ocurrir en un extremo de la pila (tope de la pila).
2.2 Pilas
tope tope
tope
2.2 Pilas
Definicin: Tambin es conocida como estructura LIFO (Last In First Out) . El ltimo elemento que entra a la pila es el primero en salir.
2.2 Pilas
2.2 Pilas
push
tope tope
2.2 Pilas
pop
tope
tope
2.2 Pilas
Pila en arreglo (estticas)
tope 7 20 9 3 43 10
5 4 3 2 1 0
2.2 Pilas
Pila en lista enlazada (dinmicas)
10
43
20
7
tope
null
2.2 Pilas
Operaciones Creacin Insercin, push Eliminacin, pop Pila llena Pila vaca
pila[3]
pila[2]
pila[1]
pila[0] tope
pila[3]
pila[2]
pila[1]
pila[0]
8
5
tope
tope tope
pila[3]
pila[2]
pila[1]
pila[0]
8
5
tope
tope tope
0
5 9
tope
pila[3]
pila[2] pila[1] pila[0]
1 3 8
5
pila[3]
pila[2] pila[1] pila[0]
tope
tope
Correspondencia de parntesis
Una de las tareas del compilador es la de verificar que el programador ha especificado de forma correcta la sintaxis del lenguaje de programacin. Una pila se puede utilizar para facilitar el procedimiento.
Por ltimo, si es el ltimo caracter de la entrada, se saca (pop) todo lo que est en la pila enviando cada elemento a la cadena que es la expresin resultado.
Ejemplo
Llevar a postfija la siguiente expresin en notacin infija:
a + b * c + (d * e + f) * g
Ejemplo
Expresin en infija
Ejemplo
Expresin en infija
Ejemplo
Expresin en infija
b * c + (d * e + f) * g
Ejemplo
Expresin en infija
* c + (d * e + f) * g
* +
Ejemplo
Expresin en infija
c + (d * e + f) * g
* +
Ejemplo
Expresin en infija
b c
Se desapilan operadores hasta conseguir uno de menor o igual prioridad al operador ledo y se envan a la expresin resultado
TOPE
* +
Ejemplo
Expresin en infija
+ (d * e + f) * g
Caso Especial
a b c *
Se desapilan operadores hasta conseguir uno de menor o igual prioridad al operador ledo y se envan a la expresin resultado
TOPE
Ejemplo
Expresin en infija
+ (d * e + f) * g
Caso Especial
a b c * +
Se desapilan operadores hasta conseguir uno de menor o igual prioridad al operador ledo y se envan a la expresin resultado
TOPE
Ejemplo
Expresin en infija
+ (d * e + f) * g
Caso Especial
b c * +
TOPE
Ejemplo
Expresin en infija
(d * e + f) * g
Ejemplo
Expresin en infija
d * e + f) * g
Ejemplo
Expresin en infija
b c * + d
TOPE
* (
Ejemplo
Expresin en infija
b c * + d e
TOPE
* (
Ejemplo
Expresin en infija
b c * + d e *
* (
Ejemplo
Expresin en infija
Ejemplo
Expresin en infija
b c * + d e *
+ (
Ejemplo
Expresin en infija
f) * g
TOPE
+ (
Ejemplo
Expresin en infija
) * g Siguiente carcter: ) se desapilan todos los operadores hasta que aparezca Un parntesis izquierdo
TOPE
b c * + d e * f
+ (
Ejemplo
Expresin en infija
) * g Siguiente carcter: ) se Desapilan todos los operadores hasta que aparezca un parntesis izquierdo
TOPE
b c * + d e * f +
Ejemplo
Expresin en infija
) * g Siguiente caracter: ) se desapilan todos los operadores hasta que aparezca un parntesis izquierdo
b c * + d e * f +
TOPE
Ejemplo
Expresin en infija
* g
b c * + d e * f +
TOPE
* +
Ejemplo
Expresin en infija
* +
Ejemplo
Expresin en infija
Al quedar la cadena vaca, se desapilan todos los operadores y se aaden a la expresin resultado. a b c * + d e * f + g
TOPE
* +
Ejemplo
Expresin en infija
Ejemplo
Expresin en infija
frente
fondo
frente
10
frente
43
20
7
fondo
null
fondo
2
8
fondo
frente
frente
cola[0]
frente fondo
fondo++; cola[fondo] = 8;
fondo++; cola[fondo] = 3;
cola[3]
cola[2] cola[1] cola[0]
fondo
8
5
fondo
frente fondo fondo
cola[3]
cola[2] cola[1] cola[0]
frente
8
5
cola[6]
cola[5] cola[4]
cola[3]
cola[2] cola[1] frente cola[0]
frente fondo
1
9 7
fondo
cola[6]
fondo
cola[5]
cola[4] cola[3]
9
7 5
cola[3]
cola[2] cola[1] cola[0]
5
3
cola[2]
cola[1] frente cola[0]
frente
8
5
11
fondo
frente
Sistemas operativos
Colas de atencin de procesos Colas de impresin Colas de paso de mensajes en procesos concurrentes Colas de paso de mensajes en redes
Sistemas de simulacin