Está en la página 1de 25

Estructuras Lineales Estáticas y

Dinámicas

1. Pilas
2. Colas
3. Listas enlazadas
1. Simples
2. Dobles
Estructuras de Datos
Almacenamiento
Contiguo
Lineales
Estructuras Almacenamiento
de Datos No Contiguo
No lineales
Operaciones Básicas en
Estructuras Lineales
1. Recorrido: Procesa c/elemento de la estructura.
2. Búsqueda: Recupera la posición de un elemento específico.
3. Inserción: Adiciona un nuevo elemento a la estructura.
4. Borrado: Elimina un elemento de la estructura.
5. Ordenación: Ordena los elementos de la estructura de
acuerdo a los valores que contiene.
6. Mezcla: Combina 2 estructuras en una sola.
PILAS
Definición:
Estructura de datos lineal donde los elementos
pueden ser añadidos o removidos solo por un
extremo.
Trabajan con filosofía LIFO (Last In- First Out ).

Ejemplos:
•Pila de platos
•Pila de discos
•Pila de llamadas a funciones
•Pila de recursion
•Pila de resultados parciales de formulas aritméticas, etc.
OPERACIONES BASICAS CON
PILAS
-PUSH (insertar).- Agrega un elementos a la pila en el
extremo llamado tope.
-POP (remover).- Remueve el elemento de la pila que
se encuentra en el extremo llamado tope.
-VACIA.- Indica si la pila contiene o no contiene
elementos.
-LLENA.- Indica si es posible o no agregar nuevos
elementos a la pila.
REPRESENTACIÓN DE PILAS:
• Usando arreglos: Define un arreglo de una dimensión
(vector) donde se almacenan los elementos.

0 1 2 3 4 5

TOPE: Apunta hacia el elemento que se


encuentra en el extremo de la pila.
(inicialmente es -1).
Aplicaciones de Pilas
EXPRESIONES ARITMETICAS:

Una expresión aritmética contiene constantes, variables


y operaciones con distintos niveles de precedencia.

OPERACIONES :
^ potencia
*/ multiplicación, división
+,- suma, resta
Aplicaciones de Pilas
Funciones Recursivas
Las pilas pueden ser usadas para implementar la
recursión en programas.
● Una función o procedimiento recursivo es aquel que
se llama a si mismo.
● Ejemplos:
− Factorial
− Números de Fibonacci
− Torres de Hanoi
− Algoritmos de Ordenamiento de datos
− Etc.
COLAS

Definicion. Es una lista lineal de elementos en la que las


operaciones de insertar y eliminar se realizan en diferentes
extremos de la cola.
Trabajan con filosofía FIFO ( First In - First out), el primer
elemento en entrar es el primer elemento en salir.

Ejemplos:

•Cola de automóviles esperando servicio en una gasolinera


•Cola de clientes en una ventanilla del banco para pagar un servicio
•Cola de programas en espera de ser ejecutados por una computadora.
TIPOS DE COLAS:

• Cola simple: Estructura lineal donde los elementos salen en el


mismo orden en que llegan.

• Cola circular: Representación lógica de una cola simple en un


arreglo.

• Cola de Prioridades: Estructura lineal en la cual los


elementos se insertan en cualquier posición de la cola y se
remueven solamente por el frente.

• Cola Doble (Bicola): Estructura lineal en la que los elementos


se pueden añadir o quitar por cualquier extremo de la cola
(cola bidireccional).
Operaciones básicas en Colas Simples
Insertar.- Almacena al final de la cola el elemento que se
recibe como paramétro.
Eliminar.- Saca de la cola el elemento que se encuentra al
frente.
Vacía.- Regresa un valor booleano indicando si la cola tiene o
no elementos (true – si la cola esta vacia, false – si la cola
tiene al menos un elemento).
Llena.- Regresa un valor booleano indicando si la cola tiene
espacio disponible para insertar nuevos elementos ( true –
si esta llena y false si existen espacios disponibles).
Representación usando arreglos

Las colas pueden ser representadas en arreglos de


una dimensión (vector) manteniendo dos variables
que indiquen el FRENTE y FINAL de los elementos
de la cola.

0 1 2 3 4 5

A F S D Z

Frente Final
• Cuando la cola esta vacía las variables frente y final son
nulos y no es posible remover elementos.

• Cuando la cola esta llena ( frente = 0 y final = n-1) no


es posible insertar elementos nuevos a la cola.

• Cuando se remueven elementos el frente puede


incrementarse para apuntar al siguiente elemento de la
cola (implementacion con frente movil) o los elementos
en la cola pueden desplazarse una posicion adelante
(implementación con frente fijo)

• Recuperación de espacio: Cuando no hay espacios libres


al final del arreglo los elementos pueden ser desplazados
para desocupar posiciones en un extremo del arreglo o
se puede manejar una estructura circular.
Frente Final
Cola
B C D
Cola Circular inicial

Frente Final
Es una representación lógica
Remover
de la cola en un arreglo.
C D
El frente y final son
movibles. Frente Final
Cuando el frente o final
llegan al extremo se Insertar E
regresan a la primera C D E
posición del arreglo.
Final Frente
Insertar F
F C D E
Representación de colas:
• Usando memoria estática: arreglos con tamaño fijo y
frente fijo o movible o represntación circular.
Final

Frente B C D E F

0 1 2 3 4

• Usando memoria dinámica: Listas ligadas.


Final

B C D E F

Frente
LISTAS ENLAZADAS

1. Simples (con enlace simple)


2. Dobles (doblemente enlazadas)

• Existe diversas implementaciones de estas


estructuras.
• Las variaciones mas comunes implementan
listas circulares y listas con cabecera en sus dos
variaciones (simples y dobles)
En lenguajes donde no se cuenta con memoria
dinámica, las listas se implementan usando
arreglos.
información enlace •El arreglo contiene dos
0 Pan -1 campos: uno para la
1 información y otro para
relacionar al siguiente
inicio 2
Galletas 4 elemento.
3

4
Jamón 7 •La lista se recorre desde el
5 inicio y hasta encontrar un
6 elemento que contenga un
7
enlace vacío.
Leche 0
LISTAS
Una lista es una colección lineal de elementos llamados nodos
donde el orden de los mismos se establece mediante punteros o
referencias y existe un puntero/referencia especial llamado inicio
para localizar al primer elemento.

Ejemplos:

inicio *Lista enlazada de 0 elementos

Información enlace

inicio
* Lista enlazada de 4 elementos
Los nodos de las listas

Un nodo se divide en 2 partes:


• Información: Contiene la información del elemento.
• Enlace: Contiene la dirección del siguiente nodo de la
lista.
public class Nodo{
información enlace // atributos
public String informacion;
Nodo public Nodo enlace;
// el constructor de nodos
Nodo (String n){
informacion = n;
enlace = null;
}
}
Almacenamiento de datos:

1. Arreglos: La relación lineal esta implícita en la


relación física de los elementos. Desventaja:
Almacenamiento estático y tamaño fijo.

2. Elementos enlazados: Agrega a cada elemento un


campo de enlace, no requieren almacenamiento
contiguo en memoria, se pueden añadir y borrar
elementos fácilmente.
Listas Simples

• Colección lineal de elementos llamados nodos.


• Existe un elemento llamado inicio que apunta al
primer elemento de la lista.
• Cada nodo contiene un campo de enlace que apunta
al siguiente elemento.
• El último elemento de la lista en su campo enlace
apunta a nulo.
• Al principio el apuntador inicio apunta a nulo.
Operaciones con listas simples
• Insertar: Agrega un elemento a la lista.
• Eliminar: Retira un elemento de la lista.
• Buscar: Busca un elemento en la lista.
• Recorrer: Visita todos los elementos de la lista.
• Vacía: Indica si la lista contiene o no elementos.
• Tamaño: Indica el número de elementos de la lista.
LISTAS DOBLES
Una lista doble es una estructura lineal de elementos llamados
nodos los cuales contienen dos campos de enlace: uno al
elemento anterior y otro al elemento siguiente de la lista.

El primer nodo de la lista contiene nulo en su enlace al elemento


anterior y el último nodo de la lista contiene nulo en su enlace al
elemento siguiente. public class Nodo{
// atributos
Object informacion;
Estructura del Nodo: Nodo anterior;
Anterior Información Siguiente Nodo siguiente;
// el constructor de nodos
Nodo (Object n){
informacion = n;
anterior = null;
siguiente = null;
}
}
Ejemplos:
Lista Vacía
inicio = fin =

Lista de un solo elemento

inicio A

fin
Lista de tres elementos

inicio A B C

fin
Operaciones con listas dobles
• Insertar: Agrega un elemento a la lista.
• Eliminar: Retira un elemento de la lista.
• Buscar: Busca un elemento en la lista.
• Recorrer hacia adelante: Visita todos los elementos de la
lista desde el inicio hasta el final.
• Recorrer hacia atrás: Visita todos los elementos de la lista
desde el final hasta el inicio.
• Vacía: Indica si la lista contiene o no elementos.
• Tamaño: Indica el número de elementos de la lista.

También podría gustarte