Sunteți pe pagina 1din 6

Pilas

Una pila, es una estructura de datos en la que el último elemento en entrar es el


primero en salir, por lo que también se denominan estructuras LIFO (Last In, First
Out) o también estructuras lineales con una política UEPS (Ultimo en entrar,
primero en salir).

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.

Operaciones asociadas con la


pila

Crear la pila

Ver si la pila está vacía

Insertar elementos en la pila

Eliminar un elemento de la pila

Vaciar la pila

Representación gráfica de la operación de una pila

Las operaciones básicas en una pila son push y pop

 - Push me permite insertar un elemento a la pila


 - Pop extrae un elemento de la pila

La forma de implementar una pila es a través de:

 - Por medio de un arreglo unidimensional

 - A través de la clase Stack de la java.util.*

 - Con una lista de elementos.

Ejercicio 1. Implementar una pila y cada una de sus operaciones a través de un


arreglo unidimensional.

Pilas a través de la clase Stack.

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.

Object peek( ) Devuelve el elemento en lo alto de la pila, pero no lo quita.

Object pop( ) Devuelve el elemento en lo alto de la pila y lo quita.

Object push(Object Introduce elemento en la pila, también devuelve elemento.


elemento)

int search(Object Busca elemento en la pila. Si lo encuentra, devuelve su


elemento) desplazamiento desde lo alto de la pila. De lo contrario,
se devuelve -1.

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:

- Crear una cola.


- Revisar si la cola está vacía.
- Revisar si la cola está llena.
- Insertar un elemento en la cola.
- Extraer un elemento de la cola.
- Revisar cuál es el siguiente elemento en la cola.

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)

Aplicaciones de las Colas

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).

Si está trabajando en una sistema multiusuario, cuando le dice a la


computadora que ejecute un programa concreto, el sistema operativo añade su
petición a su cola de trabajo.

Cuando su petición llega al frente de la cola, el programa solicitado pasa a


ejecutarse. Igualmente, las colas se utilizan para asignar tiempo a los distintos
usuarios de los dispositivos de entrada/salida (E/S), impresoras, discos, cintas y
demás. El sistema operativo mantiene colas para peticiones de imprimir, leer o
escribir en cada uno de estos dispositivos.

3.3 Listas Enlazadas

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:

Insertar un nodo al inicio.


Insertar un nodo antes o después de cierto nodo.
Insertar un nodo al final.
Borrado. La operación de borrado consiste en quitar un nodo de la lista,
redefiniendo las ligas que correspondan. Se pueden presentar cuatro casos:
Eliminar el primer nodo.
Eliminar el último nodo.
Eliminar un nodo con cierta información.
Eliminar el nodo anterior o posterior al nodo cierta con información.
Búsqueda. Esta operación consiste en visitar cada uno de los nodos, tomando al
campo liga como puntero al siguiente nodo a visitar

3.3.2 Listas enlazadas Simples

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:

Un algoritmo común de las listas de


enlace simple es la inserción de nodos. Este algoritmo está implicado de alguna
forma porue tiene mucho que ver con cuatro casos: cuando el nodo se debe
insertar antes del primer nodo; cuando el nodo se debe insertar después del último
nodo; cuando el nodo se debe insertar entre dos nodos; y cuando la lista de
enlace simple no existe
3.3.2 Lista Enlazada Dobles

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:

En la figura siguiente se muestra un ejemplo de una lista doblemente ligada


circular que almacena números:

S-ar putea să vă placă și