online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#include <stdlib.h> #include <stdio.h> struct Nodo { char dato; Nodo *siguiente; }; void menu(); void agregarCola(Nodo *&frente, Nodo *&fin, char dato); void quitarCola(Nodo *&frente, Nodo *&fin, char &dato); bool cola_vacia(Nodo *frente); int main() { menu(); // system("pause"); return 0; } void menu(){ int opc; char dato; Nodo *frente = NULL; // cola total Nodo *fin = NULL; // ultimo nodo de la cola // Asignamos memoria de la estructura Nodo a la variable frente y fin. frente = (struct Nodo*) malloc(sizeof(struct Nodo)); // '\0', NULL indica el inicio o frente esta vacio, cuando sea '\0', NODO entonces ya no estará vacia frente -> dato = '\0'; // caracter vacio frente -> siguiente = NULL; // no deben tener nodos siguientes fin = (struct Nodo*) malloc(sizeof(struct Nodo)); fin -> dato = '\0'; // caracter vacio fin -> siguiente = NULL; // no deben tener nodos siguientes do{ printf("\t.:MENU:.\n"); printf("\n1. Insertar un caracter a una cola"); printf("\n2. Mostrar todos los elementos de la cola"); printf("\n3. Salir"); printf("\nOPCION: "); scanf("%d", &opc); switch(opc) { case 1: printf("\nIngrese el caracter a leer en la cola\n"); scanf(" %c", &dato); // acá colocamos " %c" el espacio en blanco es para evitar el salto de linea que debjo tu scanf opcion. agregarCola(frente, fin, dato); break; case 2: printf("\nMostrando los elementos de la cola\n"); while(frente != NULL){ quitarCola(frente, fin, dato); if(frente != NULL){ printf("%c ,", dato); } else{ printf("%c .", dato); } } printf("\n"); // system("pause"); break; case 3: break; } // system("cls"); }while(opc != 3); } void agregarCola(Nodo *&frente, Nodo *&fin, char n) { Nodo *nuevo_nodo = NULL; //= new Nodo(); // Asignamos memoria. nuevo_nodo = (struct Nodo*) malloc(sizeof(struct Nodo)); nuevo_nodo -> dato = n; // colocamos el valor n en el atributo dato del puntero nuevo_nodo nuevo_nodo -> siguiente = NULL; // colocamos el vaor NULL en el atributo siguiente del puntero nuevo_nodo if(cola_vacia(frente)) { frente -> siguiente = nuevo_nodo; } else { fin -> siguiente = nuevo_nodo; } fin = nuevo_nodo; printf("Elemento %c anadido a la cola\n", n); } bool cola_vacia(Nodo *frente) { if(frente -> siguiente == NULL && frente -> dato == '\0') { // la cola esta vacia return true; } else { return false; } } void quitarCola(Nodo*&frente,Nodo*&fin,char &n) { n = frente -> dato; // Asignamos a n lo que queremos eliminar Nodo *aux = frente; if(frente == fin) { frente = NULL; fin = NULL; } else { frente = frente->siguiente; } delete aux; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue