#include <iostream>
#include <list>
#include <queue>
#include <string>
int main()
{
typedef std::queue<std::string> queue_type ; // queue of strings
typedef std::list<queue_type> list_type ; // list of queues
list_type list(2) ; // list containg two empty queues
// push some strings into the two queues in the list
for( std::string s : { "abc", "defg", "hi" } ) list.front().push(s) ;
for( std::string s : { "jklmn", "op", "qrst", "uvw" } ) list.back().push(s) ;
queue_type q ;
q.push("hello") ;
q.push("world") ;
// add a third (non-empty) queue at the front of the list
list.push_front(q) ;
// etc.
}
#include "cola.h"
cola::~cola() {
while(primero) Leer();
}
void cola::Anadir(string c) {
pnodo nuevo;
/* Crear un nodo nuevo */
nuevo = new nodo(c);
/* Si la cola no estaba vacÌa, aÒadimos el nuevo a continuaciÛn de ultimo */
if(ultimo) ultimo->siguiente = nuevo;
/* Ahora, el ˙ltimo elemento de la cola es el nuevo nodo */
ultimo = nuevo;
/* Si primero es NULL, la cola estaba vacÌa, ahora primero apuntar· tambiÈn al nuevo nodo */
if(!primero) primero = nuevo;
}
string cola::Leer() {
pnodo nodo; /* variable auxiliar para manipular nodo */
string c; /* variable auxiliar para retorno */
/* Nodo apunta al primer elemento de la pila */
nodo = primero;
if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
/* Asignamos a primero la direcciÛn del segundo nodo */
primero = nodo->siguiente;
/* Guardamos el valor de retorno */
c = nodo->letra;
/* Borrar el nodo */
delete nodo;
/* Si la cola quedÛ vacÌa, ultimo debe ser NULL tambiÈn*/
if(!primero) ultimo = NULL;
return c;
}