Documente Academic
Documente Profesional
Documente Cultură
En esta estructura sólo se tiene acceso a la cabeza o cima de la pila, también solo
se pueden insertar elementos en la pila cuando esta tiene espacio y solo se
pueden extraer elementos de la pila cuando tenga valores.
Crear la pila
Vaciar la pila
Stack (Pila) es una subclase de Vector que implementa una pila estándar; último
en entrar, primero en salir.
Stack solo define el constructor por defecto, que crea una pila vacía. Stack incluye
todos los métodos definidos por vector y añade varios métodos propios:
Método Descripción
boolean empty( ) Devuelve true si la pila está vacía y false si la pila contiene
elementos.
Es decir devuelve las veces que hay que hacer pop para
que el dato este en la cima.
Las Aplicaciones que tienes las pilas son las siguientes:
1. Llamadas a subprogramas
2. Recursividad
3. Tratamiento de Expresiones Aritméticas
4. Ordenación
Colas
Una cola, es una estructura de datos lineal que permite almacenar elementos por
un extremo y extraerlos por el otro. Por tal motivo, es una estructura FIFO (first in,
first out: primero en entrar, primero en salir).
Al igual que en las pilas, se debe tener el control de la cola, tomando en cuenta de
que si se quiere extraer un elemento de la cola se debe asegurar de que no esté
vacía, o si se quiere insertar un elemento se debe asegurar de que la cola no esté
llena, estas dos acciones se deben desarrollar al hacer operaciones con una cola.
Las operaciones que aplican a una cola son:
Colas Circulares.
Una cola circular es una estructura de datos lineal que hace un uso más eficiente
de la memoria disponible para su almacenamiento, sin la necesidad de requerir
más espacio, utilizando el que este desocupado. La cola se controla en forma
circular, es decir, el elemento anterior al primero es el último.
Para crear una cola circular se debe tener el control de tres puntos dentro de la
cola que son:
- La posición del primer elemento en la cola (inicio),
- La posición del último elemento en la cola (final) y
- El tamaño de la cola (máximo)
Las Colas también se utilizan en muchas maneras en los sistemas operativos para
planificar el uso de los distintos recursos de la computadora. Uno de estos
recursos es la propia CPU (Unidad Central de Procesamiento).
La lista enlazada que nos permite almacenar datos de una forma organizada, al
igual que los vectores pero, a diferencia de estos, esta estructura es dinámica, por
lo que no tenemos que saber "a priori" los elementos que puede contener.
En una lista enlazada, cada elemento apunta al siguiente excepto el último que no
tiene sucesor y el valor del enlace es null. Por ello los elementos son registros que
contienen el dato a almacenar y un enlace al siguiente elemento. Los elementos
de una lista, suelen recibir también el nombre de nodos de la lista.
Las operaciones que podemos realizar sobre una lista enlazada son las
siguientes:
Recorrido. Esta operación consiste en visitar cada uno de los nodos que forman la
lista. Para recorrer todos los nodos de la lista, se comienza con el primero, se
toma el valor del campo liga para avanzar al segundo nodo, el campo liga de este
nodo nos dará la dirección del tercer nodo, y así sucesivamente.
Inserción. Esta operación consiste en agregar un nuevo nodo a la lista. Para esta
operación se pueden considerar tres casos:
Una lista de enlace simple es una lista enlazada de nodos, donde cada nodo tiene
un único campo de enlace. Una variable de referencia contiene una referencia al
primer nodo, cada nodo (excepto el último) enlaza con el nodo siguiente, y el
enlace del último nodo contiene null para indicar el final de la lista. Aunque
normalmente a la variable de referencia se la suele llamar top, usted puede elegir
el nombre que quiera. La siguiente figura presenta una lista de enlace simple de
tres nodos, donde top referencia al nodo A, A conecta con B y B conecta con C y C
es el nodo final:
Una lista doble, ó doblemente ligada es una colección de nodos en la cual cada
nodo tiene dos punteros, uno de ellos apuntando a su predecesor (li) y otro a su
sucesor(ld). Por medio de estos punteros se podrá avanzar o retroceder a través
de la lista, según se tomen las direcciones de uno u otro puntero.
La estructura de un nodo en una lista doble es la siguiente:
Existen dos tipos de listas doblemente ligadas:
Listas dobles lineales. En este tipo de lista doble, tanto el puntero izquierdo del
primer nodo como el derecho del último nodo apuntan a NIL.
Listas dobles circulares. En este tipo de lista doble, el puntero izquierdo del primer
nodo apunta al último nodo de la lista, y el puntero derecho del último nodo apunta
al primer nodo de la lista.
Debido a que las listas dobles circulares son más eficientes, los algoritmos que en
esta sección se traten serán sobre listas dobles circulares.
En la figura siguiente se muestra un ejemplo de una lista doblemente ligada lineal
que almacena números: