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

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

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

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

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 .

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

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

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

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

Operaciones de una COLA. 10 . y isFull (estáLlena): verifica si la cola está llena. y Dequeue: elimina (saca) el primer elemento de la 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. € 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 .

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

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

a frente e frente f b c d e f g cola g cola h i cola e frente f g 14 . ‡ 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.Colas circulares.

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

Sign up to vote on this title
UsefulNot useful