void hangarDeVagones(const int &numeroVagones, Pila<int> &entrada, Lista<int> &secuenciaSalida) { Pila<int> hangar; bool resultado = true; while( resultado && (! secuenciaSalida.esVacia() || ! hangar.esVacia()) ) { // Si el elemento de la cima es igual que el primer elemento // de la secuencia resultante lo sacamos de la pila. if (hangar.esVacia() || (! entrada.esVacia() && hangar.cima() < secuenciaSalida.primero()) ) { hangar.apila( entrada.cima() ); entrada.desapila(); } else if (hangar.cima() == secuenciaSalida.primero() ) { hangar.desapila(); secuenciaSalida.resto(); } else if (hangar.cima() > secuenciaSalida.primero()) { resultado = false; } } if( resultado ) cout << "POSIBLE" << endl; else cout << "IMPOSIBLE" << endl; }
int viaDeEntrada(Pila<int> &entrada, Lista<int> &secuenciaSalida) { int numeroVagones = 0; //cout << "Introduzce el número de bagones: "; cin >> numeroVagones; if ( numeroVagones != 0) { //cout << endl << "Escriba la secuencia resultante de los bagones: " << endl; for (int n = 0; n < numeroVagones; n++) { //if( n > 0 ) cout << "Queda/n " << numeroVagones-n << " bagón/es." << endl; int a; cin >> a; secuenciaSalida.ponDr(a); } for (int j = numeroVagones; j > 0 ; j--) { entrada.apila(j); } } return numeroVagones; }
bool llaves(const char cadena[], int n, const char caracterAbertura, const char caracterCierre) { Pila<int> colaAbiertos; bool completos = true; int i = 0; int j = n-1; while(i < n) { if(cadena[i] == caracterAbertura) { colaAbiertos.apila(cadena[i]); } else if (cadena[i] == caracterCierre) { try { colaAbiertos.desapila(); } catch(EPilaVacia e) { cout << e.msg() << endl; } } i++; } if ( ! colaAbiertos.esVacia()) { completos = false; } return completos; }
int main() { int wagons = -1, expected[10000]; int i; while (wagons != 0) { cin >> wagons; for (i = 0; i < wagons; i++) { cin >> expected[i]; } int currentWagon = 1; int expectedIndex = 0; Pila<int> station; while (currentWagon <= wagons) { station.apila(currentWagon); while (!station.esVacia() && station.cima() == expected[expectedIndex] && expectedIndex < wagons) { station.desapila(); expectedIndex++; } currentWagon++; } if (station.esVacia()) cout << "POSIBLE" << endl; else cout << "IMPOSIBLE" << endl; } return 0; }
int main() { Pila<char> p; char c = 'a'; while (c != '*'){ // Mientras no introduzca asterisco para terminar cout << "> "; // Mostramos prompt cin.get(c); // Leemos el primer caracter if (c != '*'){ // Si no es el asterisco while (c != '\n'){ // Mientras no haya fin de linea p.apila (c); // Apilamos el caracter cin.get(c); // Leemos el siguiente } while (!p.esVacia()){ // Mientras no se quede vacía la pila cout << p.cima(); // Escribimos la cima de la pila p.desapila(); // Desapilamos } } cout << endl; // Añadimos un salto de linea final } return 0; }