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. y Implementación usando arreglos. € Colas: y Definición.Contenidos a Tratar. y Ejemplos de aplicación. 2 .

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

4 . € Otras operaciones usualmente incluidas en el tipo de dato abstracto pila son: y isEmpty (estáVacia): verifica si la pila está vacía. y isFull (estáLlena): verifica si la pila está llena. € Las operaciones básicas de una pila son ³push´ (empujar. y Push: añade un nuevo elemento al principio de la pila. y Pop: elimina un elemento al principio de la pila. 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 .

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

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

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

€ Su nombre se deriva de la metáfora de una cola de personas en una taquilla.La Estructura de Datos COLA. 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.

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

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

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

‡ 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 . ‡ El objetivo de una cola circular es aprovechar al máximo el espacio del arreglo. ‡ La implementación tradicional considera dejar un espacio entre el frente y la cola.Colas circulares.

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

Sign up to vote on this title
UsefulNot useful