Professional Documents
Culture Documents
3.1 LISTAS
Una lista es una coleccin de elementos llamados generalmente nodos. El orden entre los
nodos se establece por medio de enlaces o referencias a otros nodos.
Su representacin es la siguiente:
NODO
Informacin
Enlace
Si (inicio=null) entonces
{ inicio=nuevo; } Sino
{ p.enlace=nuevo; }
Hacer p=nuevo;
}
Consultar
Consultar
{
Hacer q=inicio;
Repetir Mientras(q!=null)
{
Escribir q.informacin;
Hacer q=q.enlace;
}
}
3.1.4
LISTAS DOBLEMENTE ENLAZADAS
Para este tipo de Lista se dice que es el dato que se liga con el anterior y el
siguiente.
En el siguiente ejemplo grfico se muestra cmo funciona una lista doblemente
ligada.
Donde:
1. Informacin
Es el dato de la lista.
2. Anterior
Es la Posicin donde se encuentra el dato anterior.
3. Siguiente
Es la Posicin donde se encuentra el dato siguiente.
Las listas doblemente enlazadas consisten en datos y enlaces tanto al elemento
siguiente como al elemento anterior. Con lo que se consiguen dos grandes
ventajas, primero la lista se puede leer en cualquier direccin, la segunda es que
se pueden leer los enlaces hacia delante como hacia atrs, con lo que si un enlace
resulta no valido se puede reconstruir utilizando el otro enlace.
Como en las listas simplemente enlazadas, las doblemente enlazadas pueden
contener una funcin que almacene cada elemento en una posicin especfica de
la lista a medida que esta se construye, en lugar de colocar cada elemento al final
de la lista.
Una lista doblemente enlazada es una lista lineal en la que cada nodo tiene 2
enlaces un nodo llamado siguiente y otro nodo llamado anterior.
3.1.5 LISTAS CIRCULARES
Para este tipo de listas se dice que aqu la lista ligada circular es aquella donde el
ltimo dato se enlaza con el primero, es decir, es similar a la lista enlazada simple
solo que este se enlaza el ltimo dato con el primero.
Donde:
1. Dato
Es el valor de la lista.
2. Siguiente
Es el enlace, posicin que nos da el siguiente.
3. Ultimo
Es la ltima posicin que enlaza al primer elemento.
Representacin de polinomios
En general, puede decirse que las listas son muy tiles para aquellas
aplicaciones en las cuales se necesite dinamismo en el crecimiento y reduccin
de las estructuras de datos.
Representacin de polinomios
Las listas se utilizan para almacenar los coeficientes diferentes de cero del
polinomio, junto al exponente. As, por ejemplo, dado el polinomio:
P(x) = 3X4 + 0.5X3 + 6X - 4
Su representacin mediante lista, sera como sigue:
3.2 PILAS
La pila es una de las estructuras de uso ms frecuente de datos, como acabamos
de mencionar.
Se define una pila como una lista de elementos que slo son accesibles desde el
final de la lista, que se llama la parte superior de la pila.
El modelo estndar de una pila es la pila de bandejas en una cafetera. Las
bandejas son retiradas de la parte superior, y el que la lavadora de platos o
ayudante de camarero pone una bandeja en la pila, se coloca en la parte superior
tambin
Una pila es conocido como un ltimo en entrar, primero en salir (LIFO) estructura
de datos.
Ejemplos clsicos de la vida cotidiana sera una pila de platos, una pila de
monedas, una pila de billetes, en cada pila se va tomando el de arriba, es decir el
de encima, as mismo pasa con las pilas se inserta y se elimina por arriba.
Las Operaciones bsicas que se realizan con pilas son meter elementos en la pila,
y sacar elementos de la pila, a esto se le conoce como Push y Pop.
A las pilas tambin se les conoce como LIFO, por sus siglas en ingles last in first
out, que significa ltimo en entrar, primero en salir.
tambin se elimina de la pila. Queremos ver slo el primer elemento sin llegar a
eliminar. Esta operacin se llama ojeada en C#.
3.2.3 APLICACIONES PILAS
Las operaciones que se presentan en esta aplicacin son las siguientes:
OPERACIN PUSH
Esta operacin sirve para insertar un elemento e en la pila S, lo vamos a escribir
como:
push(S,e)
Despus de hacer esta operacin sucede que:
El elemento en la cima de la pila S ahora es e
LA OPERACIN POP
Para retirar un elemento de la pila S y asignarlo a una variable del mismo tipo que
el tipo de los elementos de la pila, usaremos la operacin pop escribindola como:
v=pop(S);
En donde v es una variable que almacena el valor del elemento que estaba en la
cima de S. Hacer esta operacin tiene algunas implicaciones:
1. La variable v debe ser del mismo tipo que los elementos almacenados en la
pila.
2. Solamente se puede retirar un elemento de la pila a la vez.
3. Antes de la operacin, e era el elemento en la cima, ahora ya no lo es ms.
El apuntador ``cima'' decrece en una unidad.
LA OPERACIN STACKEMPTY
Esta operacin toma como argumento una estructura del tipo stack (pila) y
devuelve un valor booleano, devuelve un true si la pila est vaca y devuelve un
false si la pila tiene al menos un elemento.
LA OPERACIN STACKTOP
La operacin stacktop(S) devuelve el valor del elemento en la cima de la pila S.
Para hacer esta operacin escribiremos:
v=stacktop(S)
Las implicaciones de usar esta operacin son:
1. Se hace una copia del elemento que est en la cima
2. En realidad se hacen dos operaciones, primero se hace v=pop(S), luego un
push(S,v), porque despus de la operacin stacktop, la pila S queda sin
cambio alguno.
Para ver aplicaciones con pilas, en pseudocdigo queda de la siguiente forma:
// Insercin en Pilas de forma tradicional
principal()
{
// declaracion de variables
top = 0; Pila[10]=0; Dato=0;N=10;
do
{
pedir " de el numero a insertar :";
Leer Dato;
// Verificar si hay lugar en pila
si(top >= N) entonces
{ Desplegar " Pila llena";}
sino
{
pila[top]=Dato;
top = top + 1;
}
preguntar " Desea otra insercion en pila :",
Leer otro;
}while(otro != "No");
}
3.3 COLAS
En Programacin, se le llama Cola al Tipo de Dato Abstracto que es una Lista en
la que sus elementos se introducen (Encolan) nicamente por un extremo que le
llamamos Final de la Cola y se remueven (Desencolan) nicamente por el
extremo contrario al que le llamamos Frente de la Cola o Principio de la Cola.
Usando la memoria esttica: arreglo con tamao fijo y frente fijo o movible
o representacin circular.
Vaca: devuelve cierto si la pila est vaca o falso en caso contrario (empty).