Unidad 3 estructuras lineales estaticas y dinamicas

6

Click here to load reader

Transcript of Unidad 3 estructuras lineales estaticas y dinamicas

Page 1: Unidad 3 estructuras lineales estaticas y dinamicas

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)

Pila

1

4 40 

3 35

2 20

1 15

Tope

Page 2: Unidad 3 estructuras lineales estaticas y dinamicas

ESTRUCTURAS DE DATOS

(Stack)

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.

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.

2

Page 3: Unidad 3 estructuras lineales estaticas y dinamicas

ESTRUCTURAS DE DATOS

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.

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

3

Fin

Frente

40

20

30

25

1

2

3

4

Page 4: Unidad 3 estructuras lineales estaticas y dinamicas

ESTRUCTURAS DE DATOS

(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

30

1010

Lista Doble

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:

4

1002

10

Null

1010

20

1002

1030

300

1050

null

1050

200

1010

1030

1010

100

null

1050

Nodo

inicio=1010

fin=1030ant

sig

Page 5: Unidad 3 estructuras lineales estaticas y dinamicas

ESTRUCTURAS DE DATOS

5