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

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

La Estructura de Datos PILA. 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. El último elemento en entrar es el único accesible en cada momento. Entra Sale € Tope € 3 .

€ Las operaciones básicas de una pila son ³push´ (empujar. € 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. 4 . y Pop: elimina un elemento al principio de la pila. y isFull (estáLlena): verifica si la pila está llena. 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=create_stack(ps). }. € La desventaja de implementar una pila mediante un arreglo es que esta última es de tamaño fijo. los arreglos permiten almacenar colecciones ordenadas. € #define STACKSIZE 100 struct Stack{ int top. } main(){ struct Stack *ps. int nodes[STACKSIZE]. : } 6 . Una pila es una colección ordenada de objetos. mientras que la pila es de tamaño dinámico.Implementación con arreglos. return ps. struct Stack *create_stack (struct Stack *ps) { ps = (struct Stack *) malloc(sizeof(struct Stack)). ps->top=-1. € En C.

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

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

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

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

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

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

‡ La implementación tradicional considera dejar un espacio entre el frente y la cola.Colas circulares. ‡ 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 .

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

Sign up to vote on this title
UsefulNot useful