Sie sind auf Seite 1von 3

Taller - Pila y Cola

TALLER PILAS y COLAS

Programacin Avanzada

Profesor: Jorge Lanzarotti - Ayudante: Patricio Beckmann


Profesor: Roberto Konow Ayudante: Chien-Fu Chen

Taller - Pila y Cola

Las pilas y colas son TDA (Tipo de dato abstracto) que utiliza la EDD (Estructura de dato) anteriormente vista LISTA, en vulgares palabras son listas que se comportan de distintas maneras que slo pueden insertar y eliminar nodos en uno de los extremos de la lista (al principio o al final). Estos mtodos se conocen como push (empujar o agregar) y pop (tirar o eliminar y adems retorna su valor).

PILA Comportamiento de la lista LIFO (Last In First Out), el ltimo en entrar es el primero en salir. Ej: Apilamos un monton de libros, al termino de este si queremos sacar el primer libro que ingresamos tendremos que retirar todos los anteriores primero para llegar a ese.

COLA Comportamiento de la lista FIFO (First In First Out), el primero en entrar es el primero en salir. Ej: Una cola en el supermercado, el primero que entra a la caja va ser el primero que lo atienden asi que va a ser el primero en salir, los demas tienen que esperar en una cola.

Nos centraremos primero en entender PILAS y despus programaremos COLAS. Para darnos una idea de como funciona las pilas nos guiaremos de los siguientes diagramas: Mtodo push: Ingresaremos 3 nodos.

Al finalizar toda la insercin podemos ver que el primer nodo que ingresamos (1) qued al final de nuestra pila, para poder recuperarla tendremos que sacar (3) y (2) respectivamente para poder llegar a (1).

Mtodo pop: Vamos a obtener el valor del primer nodo que insertamos.

Al momento de realizar un pop este quita de la pila el nodo de mas arriba o el ltimo que fue ingresado, adems de quitarlo retorna su valor. Si queremos obtener el valor del primer nodo que ingresamos tendremos que dejar la lista vaca ya que para obtenerlo tenemos que retirar los nodos que esten arriba de l y hacerle un pop al primero como el diagrama lo demuestra.

Para obtener el comportamiento LIFO tendremos que insertar en la cabeza y eliminar tambin por ah.

La clase pila Como ven no tiene diferencia a la clase lista, pero veremos como se diferencian en los mtodos.

class pila { private: nodo *head; public: pila() { head = NULL; } void Push(int v); int Pop(); };

Mtodo push:

void pila::Push(int v) { nodo *nuevo = new nodo(v); nuevo->sig = head; head = nuevo; }

Mtodo pop:

int pila::Pop() { nodo *aux; int v; if(!head) return -1; aux = head; head = aux->sig; v = aux->get_valor(); return v; }

// puntero a nodo auxiliar // variable auxiliar para retornar el valor // Si la cola esta vacia retornamos -1 //guardamos el puntero a la cabeza //la nueva cabeza es el siguiente de la cabeza anterior //guardamos el valor del nodo que retiramos

main y resultado.

int main() { pila *X = new pila(); X->Push(1); cout << "Push(20)" X->Push(2); cout << "Push(10)" cout << "Pop() = " X->Push(3); cout << "Push(40)" X->Push(4); cout << "Push(30)" cout << "Pop() = " cout << "Pop() = " X->Push(5); cout << "Push(90)" cout << "Pop() = " cout << "Pop() = " } << endl; << endl; << X->Pop() << endl; << endl; << endl; << X->Pop() << endl; << X->Pop() << endl; << endl; << X->Pop() << endl; << X->Pop() << endl;

Ejercicios: 1. Implementar el mtodo imprimir, ste debe ser capaz de imprimir todos los valores en orden de llegada, la pila no puede sufrir de ningn cambio. TIP Obligatorio: Se necesita otra pila para realizarlo. 2. Implemente una Cola con sus respectivos mtodos (push y pop).

Das könnte Ihnen auch gefallen