Está en la página 1de 19

Repblica Bolivariana de Venezuela Universidad Tecnolgica del Centro Departamento Redes

Estructura Datos

Facilitador: Prof. Bassam Asfur

Estructura Pila
Una pila (stack en ingls) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el rea de informtica debido a su simplicidad y ordenacin implcita de la propia estructura Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado. En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto apilado (denominado TOS, Top of Stack en ingls). La operacin retirar permite la obtencin de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.

Estructura Pila
Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre una pila de platos, y una operacin retirar a retirarlo. Las pilas suelen emplearse en los siguientes contextos: Evaluacin de expresiones en notacin postfija (notacin polaca inversa). Reconocedores sintcticos de lenguajes independientes del contexto Implementacin de recursividad.

Estructura Pila
Operaciones Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen aadir ms de uso habitual. Crear: se crea la pila vaca. Apilar: se aade un elemento a la pila.(push) Desapilar: se elimina el elemento frontal de la pila.(pop) Cima: devuelve el elemento que esta en la cima de la pila. (top o peek) Vaca: devuelve cierto si la pila est vaca o falso en caso contrario.

Estructura Pila
Estructuras de datos relacionadas El tipo base de la estructura FIFO (el primero en entrar es el primero en salir)es la cola. Por ejemplo, el cambio de una pila en una cola en un algoritmo de bsqueda puede cambiar el algoritmo de bsqueda en primera profundidad (en ingls, DFS) por una bsqueda en amplitud (en ingls, BFS). Una pila acotada es una pila limitada a un tamao mximo impuesto en su especificacin.

Estructura Pila
Arquitectura bsica de una pila Una pila tpica es un rea de la memoria de los computadores con un origen fijo y un tamao variable. Al principio, el tamao de la pila es cero. Un puntero de pila, por lo general en forma de un registro de hardware, apunta a la ms reciente localizacin en la pila; cuando la pila tiene un tamao de cero, el puntero de pila de puntos en el origen de la pila. Las dos operaciones aplicables a todas las pilas son: Una operacin apilar, en el que un elemento de datos se coloca en el lugar apuntado por el puntero de pila, y la direccin en el puntero de pila se ajusta por el tamao de los datos de partida. Una operacin desapilar: un elemento de datos en la ubicacin actual apuntado por el puntero de pila es eliminado, y el puntero de pila se ajusta por el tamao de los datos de partida.

Estructura Pila
Hay muchas variaciones en el principio bsico de las operaciones de pila. Cada pila tiene un lugar fijo en la memoria en la que comienza. Como los datos se aadirn a la pila, el puntero de pila es desplazado para indicar el estado actual de la pila, que se expande lejos del origen (ya sea hacia arriba o hacia abajo, dependiendo de la aplicacin concreta Por ejemplo, una pila puede comenzar en una posicin de la memoria de mil, y ampliar por debajo de las direcciones, en cuyo caso, los nuevos datos se almacenan en lugares que van por debajo de 1000, y el puntero de pila se decrementa cada vez que un nuevo elemento se agrega. Cuando un tema es eliminado de la pila, el puntero de pila se incrementa.

import java.io.*; public class principal { static int v[],i=0,n; public static void insertar(int v[], int i){ if (principal.i<principal.n){ v[i]=i+1; principal.i++; } else{ System.out.println("Pila llena"); } } public static void borrar(int v[], int i){ System.out.println("El elemento Borrado es "+v[i-1]); principal.i--; } public static void imprimir(int v[],int n){ System.out.println("\nLos datos de la Pila son"); for(int i=n-1; i>=0;i--){ System.out.println(v[i]); } }

Pila con un Arreglo


public static void destruir(){ principal.i=0; } public static void main(String[] y)throws IOException{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int num; n=4; v = new int[n]; do{ new menu();// clase que muestra menu num = Integer.parseInt(in.readLine( )); switch(num){ case 1: insertar(v,i); break; case 2: borrar(v,i); break; case 3: imprimir(v,i); break; case 4: destruir(); }

}while(num!=5); }

} class menu{ public menu(){ System.out.println("Selecione una opcion"); System.out.println("1.- Insertar Elemento"); System.out.println("2.- Borrar Elemento"); System.out.println("3.- Imprimir Stack"); System.out.println("4.- Destroy Stack"); System.out.println("5.- Salir"); } }

Estructura Cola
Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento en entrar ser tambin el primero en salir. Las colas se utilizan en sistemas informticos, transportes y operaciones de investigacin (entre otros), dnde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

Estructura Cola
Usos concretos de la cola La particularidad de una estructura de datos de cola es el hecho de que slo podemos acceder al primer y al ltimo elemento de la estructura. As mismo, los elementos slo se pueden eliminar por el principio y slo se pueden aadir por el final de la cola. Ejemplos de colas en la vida real seran: personas comprando en un supermercado, esperando para entrar a ver un partido de bisbol, esperando en el cine para ver una pelcula, una pequea peluquera, etc. La idea esencial es que son todos lneas de espera. En caso de estar vaca borrar un elemento sera imposible hasta que no se aade un nuevo elemento. A la hora de aadir un elemento podramos darle una mayor importancia a unos elementos que a otros (un cargo VIP) y para ello se crea un tipo de cola especial que es la cola de prioridad.

Estructura Cola
Ejemplo grafico de una cola

Estructura Cola
Operaciones Bsicas Crear: se crea la cola vaca. Encolar (aadir, entrar, push): se aade un elemento a la cola. Se aade al final de esta. Desencolar (sacar, salir, pop): se elimina el elemento frontal de la cola, es decir, el primer elemento que entr. Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primero elemento que entr.

Estructura Cola
Tipos de colas
Colas circulares (anillos): en las que el ltimo elemento y el primero estn unidos. Una cola circular o anillo es una estructura de datos en la que los elementos estn de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden consultarse, aadirse y eliminarse nicamente desde la cabeza del anillo que es una posicin distinguida. Existen dos operaciones de rotaciones, una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor, respectivamente, de la cabeza actual.

Estructura Cola
Representacin grafica colas circulares

Estructura Cola
Tipos de colas

Colas de prioridad: En ellas, los elementos se atienden en el orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atendern de modo convencional segn la posicin que ocupen. Hay 2 formas de implementacin: Aadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola ordenada por orden de prioridad. Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

Estructura Cola
Tipos de colas
Bicolas: son colas en donde los nodos se pueden aadir y quitar por ambos extremos. Para representar las bicolas lo podemos hacer con un array circular con Inicio y Fin que apunten a cada uno de los extremos. Hay variantes: Bicolas de entrada restringida: Son aquellas donde la insercin slo se hace por el final, aunque podemos eliminar al inicio al final. Bicolas de salida restringida: Son aquellas donde slo se elimina por el final, aunque se puede insertar al inicio y al final.

Estructura Cola

Tarea:
Crear un programa en java que permita realizar operaciones sobre un arreglo asumiendo que se esta trabajando sobre una cola de datos Fecha de entrega 11/10/2011

También podría gustarte