P. 1
Pilas y Colas (1)

Pilas y Colas (1)

|Views: 286|Likes:

More info:

Published by: Robert Bello González on Sep 18, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

02/02/2015

pdf

text

original

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

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

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

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

€ 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.Implementación con arreglos. los arreglos permiten almacenar colecciones ordenadas. return ps. struct Stack *create_stack (struct Stack *ps) { ps = (struct Stack *) malloc(sizeof(struct Stack)). mientras que la pila es de tamaño dinámico. } main(){ struct Stack *ps. int nodes[STACKSIZE]. ps->top=-1. ps=create_stack(ps). : } 6 . }. € En C. Una pila es una colección ordenada de objetos.

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

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

El elemento con más tiempo en la cola es el que puede ser extraído.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). € Su nombre se deriva de la metáfora de una cola de personas en una taquilla.

€ 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. 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.

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

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

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. ‡ La idea es insertar elementos en las localidades previamente desocupadas.

y Solicitudes a un servidor. € En general. € Clientes solicitando ser atendidos por una telefonista.Aplicaciones de las colas. 15 € . 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.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->