Este documento describe diferentes estructuras lineales de datos como pilas, colas y listas enlazadas. Explica que una pila es una estructura LIFO donde el último elemento insertado es el primero en salir, mientras que una cola es una estructura FIFO donde los elementos se insertan por un extremo y se extraen por el otro. También define las listas enlazadas como una colección de nodos que almacenan datos y enlaces a otros nodos, permitiendo que estos se almacenen en cualquier parte de la memoria.
1. Instituto Tecnológico Superior de Felipe Carrillo Puerto
ING. SISTEMAS COMPUTACIONALES
Docente: Niels Henryk Aranda Cuevas
Alumna: Marleni Tuyub Che
3. Operaciones asociadas con la pila
Crear la pila
Ver si la pila esta vacía
Insertar elementos en la pila
Eliminar un elemento de la pila
Vaciar la pila
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
Representacion grafica de la operación de una pila
4. Las operaciones básicas en una pila son push y pop
· - Push 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.
Pilas a través de la clase Stack.
Stack (Pila) es una subclase de Vector que implementa una pila estándar; ultimo 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:
5. 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
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.
6. Listas enlazadas
Una lista enlazada o estructura ligada, es una estructura lineal que almacena una colección de elementos generalmente
llamados nodos, en donde cada nodo puede almacenar datos y ligas a otros nodos. De esta manera los nodos pueden
localizarse en cualquier parte de la memoria, utilizando la referencia que lo relaciona con otro nodo dentro de la
estructura.
Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar datos que están cambiando constante
mente. A diferencia de los vectores, las estructuras dinámicas se expanden y se contraen haciéndolas más flexibles a la
hora de añadir o eliminar información.
Las listas enlazadas permiten almacenar información en posiciones de memoria que no sean contiguas; para almacenar
la información contienen elementos llamados nodos. Estos nodos poseen dos campos uno para almacenar la información
o valor del elemento y otro para el enlace que determina la posición del siguiente elemento o nodo de la lista.
Lo más recomendable y flexible para la creación de un nodo es utilizar un objeto por cada nodo, para ello debe
comprender cuatro conceptos fundamentales que son:
- Clase auto-referenciada,
- Nodo,
- Campo de enlace y
- Enlace
Una clase auto-referenciada es una clase con al menos un campo cuyo tipo de referencia es el nombre de la misma
clase.
public clase Nodo
{
Object elemento;
Nodo siguiente;
//métodos
}
7. Las listas enlazadas se dividen en:
- Listas enlazadas simples (con una sola dirección) y
- Listas enlazadas dobles (con dos direcciones).
Simples
Una lista enlazada simple es una colección de nodos que tienen una sola dirección y que en conjunto forman una
estructura de datos lineal. Cada nodo es un objeto compuesto que guarda una referencia a un elemento (dato) y
una referencia a otro nodo (dirección).
La referencia que guarda un nodo a otro nodo se puede considerar un enlace o un puntero hacia el segundo
nodo y el salto que los relaciona recibe el nombre de salto de enlace o salto de puntero. El primer nodo de una
lista recibe el nombre de cabeza, cabecera o primero y el último es llamado final, cola o último (es el único nodo
con la referencia a otro objeto como nula).
Un nodo de una lista enlazada simple puede determinar quien se encuentra después de él pero no puede
determinar quien se encuentra antes, ya que solo cuenta con la dirección del nodo siguiente pero no del anterior.
cabeza
final
8. Dobles.
Una lista enlazada doble es una colección de nodos que cuentan con dos direcciones en cada uno de sus nodos y
que en conjunto forman una estructura de datos lineal. Cada nodo es un objeto compuesto que guarda una
referencia a un elemento (dato), una referencia al nodo anterior (dirección predecesora) y una referencia al nodo
siguiente (dirección sucesora).
Un nodo de una lista enlazada doble puede determinar quien se encuentra después de él y quien se encuentra antes
de él, ya que cuenta con las direcciones de los nodos siguiente y anterior.
Operaciones
Inserción (Al final del la lista, al inicio de la lista y en cierta posición de la lista)
Recorrido (Por el inicio y por el final)
Eliminación (Del inicio de la lista, del final de la lista y de cierta posición de la lista).
9. CONCLUSIÓN
La lista enlazada nos permite almacenar datos de una forma organizada, pero, a diferencia de estos, esta
estructura es dinámica, en una lista enlazada , cada elemento apunta al siguiente excepto el ultimo que no
tiene sucesor y el valor del enlace es null suelen recibir también el nombre de nodos de la lista.