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

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

€ Su nombre se deriva de la metáfora de una pila de platos en una cocina. Entra Sale € Tope € 3 . 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).La Estructura de Datos PILA.

y Pop: elimina un elemento al principio de la pila. € Las operaciones básicas de una pila son ³push´ (empujar. 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). 4 .

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 .

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

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

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

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 . € Su nombre se deriva de la metáfora de una cola de personas en una taquilla.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.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. y Dequeue: elimina (saca) el primer elemento de la cola.

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 .

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

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

a frente e frente f b c d e f g cola g cola h i cola e frente f g 14 .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. ‡ La implementación tradicional considera dejar un espacio entre el frente y la cola.

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

Sign up to vote on this title
UsefulNot useful