Estructuras de Datos INF-152 Integrantes: Robert Bello. Anthony Moscat. Manuel Cabrera. Profesor: Sergio Sánchez.

y Implementación usando arreglos. € Pilas: y Definición. y Ejemplos de aplicación. € Colas: y Definición. 2 . y Implementación usando arreglos. y Ejemplos de aplicación.Contenidos a Tratar.

El último elemento en entrar es el único accesible en cada momento. La inserción y extracción de elementos de la pila siguen el principio LIFO (last-in-first-out). € Su nombre se deriva de la metáfora de una pila de platos en una cocina. Entra Sale € Tope € 3 .La Estructura de Datos PILA.

y Pop: elimina un elemento al principio de la pila. 4 . y isFull (estáLlena): verifica si la pila está llena. € Otras operaciones usualmente incluidas en el tipo de dato abstracto pila son: y isEmpty (estáVacia): verifica si la pila está vacía. y Push: añade un nuevo elemento al principio de la pila.Operaciones de una PILA. meter) y ³pop´ (sacar). € Las operaciones básicas de una pila son ³push´ (empujar.

Ejemplo 1 1 4 push(4) 4 push(1) 1 4 push(1) 1 4 pop() 4 1 4 push(4) 1 4 pop() 5 .

€ En C.Implementación con arreglos. los arreglos permiten almacenar colecciones ordenadas. Una pila es una colección ordenada de objetos. : } 6 . } main(){ struct Stack *ps. struct Stack *create_stack (struct Stack *ps) { ps = (struct Stack *) malloc(sizeof(struct Stack)). }. ps=create_stack(ps). int nodes[STACKSIZE]. ps->top=-1. mientras que la pila es de tamaño dinámico. return ps. € La desventaja de implementar una pila mediante un arreglo es que esta última es de tamaño fijo. € #define STACKSIZE 100 struct Stack{ int top.

PUSH void push(struct Stack* ps. ps->nodes[ps->top] = i. return t. int i) { if (ps->top == (STACKSIZE -1)) printf(´Full stack\n"). ps->top--. else { int t= ps->nodes[ps-> top]. } } 7 . } } POP int pop(struct Stack *ps) { if (ps->top== -1) printf(´Empty stack\n").Las Operaciones Básicas. else { ps->top++.

y Cuando el usuario quiere regresar (presiona el botón de retroceso). la cual extraer el estado del texto antes del último cambio realizado. € Navegador Web y Se almacenan los sitios previamente visitados. € Editores de texto y Los cambios efectuados se almacenan en una pila.Aplicaciones de las Pilas. 8 . dirección (pop) de la pila de sitios visitados. y Usuario puede deshacer los cambios mediante la operación ³undo´. y Usualmente implementada como arreglo. simplemente se extrae la última.

€ Su nombre se deriva de la metáfora de una cola de personas en una taquilla. Entra cola € € frente Sale 9 . La inserción y extracción de elementos de la cola siguen el principio FIFO (first-in-first-out). El elemento con más tiempo en la cola es el que puede ser extraído.La Estructura de Datos COLA.

€ Las operaciones básicas de una cola son ³enqueue´ (meter) y ³dequeue´ (sacar) y Enqueue: añade un nuevo elemento a final de la cola. y Dequeue: elimina (saca) el primer elemento de la cola. y isFull (estáLlena): verifica si la cola está llena. 10 .Operaciones de una COLA. € Otras operaciones usualmente incluidas en el tipo abstracto COLA son: y isEmpty (estáVacia): verifica si la cola está vacía.

Ejemplo: a a a b b b c c a a a b b c b c No es necesario mover todos los elementos Apuntadores al frente y a la cola 11 .

ps=create_queue(ps). struct Queue *create_queuek (struct Queue *ps) { ps = (struct Queue *) malloc(sizeof(struct Queue)). } main(){ struct Queue *ps. En C. int rear. int nodes[QUEUESIZE]. }. #define QUEUESIZE 100 struct Queue{ int front. Uso eficiente mediante un arreglo circular. : } 12 € € € .Implementación con arreglos. € Una cola es una colección ordenada de objetos. Misma desventaja: los arreglos tienen tamaño fijo. return ps. los arreglos permiten almacenar colecciones ordenadas. ps->rear = -1. ps->front = 0.

} } NO se tiene un arreglo circular. else { int t= ps->nodes[ps-> front]. ps->front++. else { ps->rear++. ¿qué hacer? 13 .Las operaciones básicas. ENQUEUE void enqueue(struct Queue* ps. } } DEQUEUE int dequeue (struct Queue *ps) { if (ps->front == ps->rear + 1) printf(´Empty stack\n"). ps->nodes[ps->rear] = i. return t. int i) { if (ps->rear == (QUEUESIZE -1)) printf(´Full queue\n").

‡ La implementación tradicional considera dejar un espacio entre el frente y la cola. ‡ El objetivo de una cola circular es aprovechar al máximo el espacio del arreglo. ‡ La idea es insertar elementos en las localidades previamente desocupadas. a frente e frente f b c d e f g cola g cola h i cola e frente f g 14 .Colas circulares.

y Solicitudes a un servidor. Simulaciones de cualquier situación real en la que se presente una ³organización´ tipo cola. € En general. 15 € . € Clientes solicitando ser atendidos por una telefonista. operaciones en redes de computadoras y Trabajos enviados a una impresora.Aplicaciones de las colas.

Sign up to vote on this title
UsefulNot useful