Unidad 3 estructuras lineales estaticas y dinamicas
1. ESTRUCTURAS DE DATOS
UNIDAD 3 ESTRUCTURAS LINEALES ESTATICAS Y DINAMICAS
Una Estructura de datos, es una colección de datos almacenados, que se caracteriza por su
organización y las operaciones que la componen. Una estructura de datos esta compuesta por
tipos de datos simples o primitivos (entero, real, carácter, etc.).
Las estructuras de datos se organizan de forma Estática y Dinámica.
• Las Estructuras de datos Estáticas, son aquellas en las que el tamaño ocupado en
memoria se define al tiempo de compilación, es decir, antes de la ejecución del
programa, y no podrá ser cambiado durante ella.
• Las Estructuras de datos Dinámicas, no tienen limitaciones en la asignación de
memoria, ya que esta se define durante la ejecución del programa.
Las estructuras de datos pueden ser Lineales y no Lineales, las primera se refieren a que los
elementos se encuentran posicionados lógicamente de manera secuencial uno tras otro, y las
no lineales son aquellas en que después de un elemento se encuentran posicionados más de
uno.
Entre las Estructuras Lineales se encuentran las Pilas, Colas y Listas.
PILAS
La Pila es una estructura de datos lineal que puede organizarse de manera estática o dinámica.
Se caracteriza por tener un mecanismo llamado LIFO (Last Input, First Output) que permite
realizar operaciones de inserción y eliminación de manera que el último en entrar, es el
primero en salir. Las entradas y salidas de datos se realizan por uno de sus extremos llamado
Tope.
La mayoría de lenguajes disponen de un tipo de dato Pila( Stack), sin embargo, es necesario
conocer su manipulación ya sea mediante memoria estática o dinámica.
Mediante memoria estática la forma de representar una pila es mediante un vector. Para
representarla como estructura dinámica, se usan Listas Enlazadas o Ligadas.
Representación grafica (Estática)
4 40 Tope
3 35
2 20
1 15
1
2. ESTRUCTURAS DE DATOS
Pil
a
(St
ack
)
Operaciones primitivas
1. INSERCIÓN. Consiste en agregar datos o elementos a una pila incrementando el tope
de esta, y la operación se conoce como push. Cuando se trata de una pila estática, la
operación se puede realizar siempre y cuando exista espacio en la pila.
2. ELIMINACIÓN. La supresión de un dato es conocida como operación pop, y una vez
eliminado el dato, el tope debe decrementarse. Para realizar esta operación la Pila
debe tener al menos un elemento.
3. OBTENER ELEMENTO EN EL TOPE. Es la operación llamada stacktop, y permite
obtener el dato que se encuentra al tope, sin eliminarlo de la pila. Al igual que la
operación anterior, para realizarla, la Pila debe tener al menos un elemento.
4. PILA VACÍA. Permite saber si la Pila está vacía para poder realizar otras operaciones.
La operación retorna un valor verdadero si efectivamente la Pila se encuentra vacía, y
se conoce como empty.
Además de estas operaciones, cuando se trata de una Pila Estática, se debe definir la
operación para saber si la Pila está llena, ya que tendremos la limitación de memoria.
COLAS
Una cola es una estructura de datos lineal. El mecanismo que identifica a una cola es conocido
como FIFO (Fisrt Input First Output), es decir el primer elemento que se inserta a una cola es
el primero en salir. Los extremos por donde se realizan las operaciones de entrada y salida,
son llamados fin y frente, consecutivamente.
2
3. ESTRUCTURAS DE DATOS
Existen diversos tipos de colas:
1. La cola circular: Es aquella que representa a la estructura de datos como un círculo y
no como una línea recta. Esta representación soluciona el problema de espacio
desaprovechado que se presenta en una cola estática considerada como línea recta.
3
Fin
30 40
4
2
25 20
Frente
1
2. La bicola o cola doble: Es aquella en la que las inserciones y las eliminaciones se
pueden realizar por cualquiera de sus dos extremos. Existen dos tipos de bicolas:
a) Bicola de entrada restringida: Es aquella que acepta inserciones solo al final de
la cola y acepta eliminaciones tanto por el frente como en el fin.
b) Bicola de salida restringida: Es aquella que acepta eliminaciones solo por el
frente e inserciones tanto por el final como por el frente.
3. Cola de prioridades: Es aquella en la que el orden de sus elementos determina el
resultado de sus operaciones básicas hay dos tipos de colas de prioridades:
a) Cola de prioridad ascendente: Es aquella en que los elementos se pueden
insertar de manera arbitraria haciendo que estos lleven un orden ascendente
por lo que eliminación (por el frente), es del elemento menor.
b) Cola de prioridad descendente: Es aquella en la que los elementos se insertan
de manera arbitraria siempre y cuando el orden de estos quede descendente
por lo que la eliminación será del elemento mayor.
Operaciones Primitivas o Básicas
1. Insertar un elemento. Agrega por el extremo del fin un elemento a la Cola. El nombre
puede variar, pero en general es la operación insert.
2. Eliminación de un elemento. Remueve el elemento del frente de la cola. Operación
remove.
3. Cola Vacía . Determina si la estructura está vacía. Operación empty.
De la misma forma que se utilizan las Pilas, será necesario crear la operación de Cola llena, si
se trata de una estructura estática.
3
4. ESTRUCTURAS DE DATOS
Se debe tener cuidado en validar las operaciones, checando que estas sí se puedan realizar
para evitar errores.
LISTAS ENLAZADAS
Una lista enlazada o ligada, es una estructura de datos lineal dinámica.
Una lista enlazada se caracteriza porque los elementos se almacenan en posiciones de
memoria que no son contiguas, por lo que cada elemento necesita almacenar la referencia
(dirección de memoria) del siguiente elemento de la lista. Existen Listas Simples, Dobles,
Simple Circular y Doble Circular.
Esta forma de almacenamiento y organización de datos resulta la más adecuada si el número
de elementos a almacenar es impredecible, ya que no hay un límite preestablecido para el uso
de memoria.
Una lista de este tipo se comporta de acuerdo a las necesidades de la aplicación. Es decir no
existen operaciones específicas para una lista, mediante Listas Enlazadas se pueden
representar Pilas y Colas.
Lista Simple
Una lista enlazada Simple se construye vinculando objetos, llamados Nodos, que contienen al
menos un miembro para la información y un miembro que es una referencia a otro objeto de
su mismo tipo, de modo que el último nodo en la lista no contiene otra referencia, sino un
valor nulo. Una lista Simple, contiene la referencia al primer objeto o nodo, que es el inicio de
la lista.
Representación gráfica:
Inicio = 1008
1008
1002
30
10
1010
Null
1010
20
Nodo
1002
Lista Doble
4
5. ESTRUCTURAS DE DATOS
Una lista ligada simple restringe el recorrido por los nodos hacia una sola dirección, así como
dificulta la operación de eliminación de un nodo. Estos inconvenientes desaparecen si se
utiliza una lista doblemente ligada.
Una lista doble es aquella donde cada nodo tiene un par de miembros que contienen
referencias de enlace. Un enlace permite recorrer la lista hacia adelante, mientras que el otro
permite hacerlo hacia atrás.
Para que esto tenga sentido la lista puede definir dos referencias, la del nodo inicial y la del
nodo final.
Representación gráfica:
1010 1050 1030
100 200 300
null 1010 1050
1050 1030 null
inicio=1010
fin=1030
ant
sig
5