[C con Clase] Pilas

Jose Villafañe joev89 en gmail.com
Lun Abr 27 16:32:26 CEST 2009


Buenas gente!
tengo el siguiente problema....en un proyecto de la uni me mandaron a hacer
un programa que muestre un menu y permita al usuario entre trabajar con
arreglos, con pilas, con colas o salir del programa...eso lo hice!;
el menu principal queda asi:

1.-Arreglos
2.-Pilas
3.-Colas
4.-Salir

Cuando entras a las pilas o las colas el menu queda asi:

1.-Insertar
2.-Extraer
3.-Visualizar la Pila/Cola
4.-Salir

ahora...el proble es que, en teoria, cuando entras al menu de las
pilas(notar que esta de segunda opcion) y escoges la opcion Salir, deberia
regresar al menu principal, pero en vez de eso, se va hacia el menu de las
colas, y ahi es cuando, si le das a la opcion Salir, regresa al Menu
Principal

necesito ayuda para saber que puedo hacer para que en vez de pasar del menu
de pilas al de colas, al darle a la opcion salir..se vaya al menu principal!

Les dejo parte del codigo...especificamente la parte de la pila, a ver si me
pueden ayudar por favor!

void Pila(void)
{
     char opc;
    do
    {
        system("cls");

        cout << "\t \t \t \tPila." << endl;
        cout << "\n";

        cout << "1.- Insertar" << endl;
        cout << "\n";

        cout << "2.- Extraer" << endl;
        cout << "\n";

        cout << "3.- Visualizar la pila" << endl;
        cout << "\n";

        cout << "4.- Salir" << endl;
        opc=getch( );
        switch(opc)
        {
            case '1':
                insertar( );
                break;
            case '2':
                extraer( );
                break;
            case '3':
                visualizar( );
        }
    }while (opc!='4');
}

void insertar(void)
{
    AUX=(struct pila *)malloc(sizeof(struct pila));
    system("cls");
    cout << "Nombre: ";
    gets(AUX->nombre);
    if (CAB==NULL)
    {
        CAB=AUX;
        AUX->ant=NULL;
    }
    else
    {
        AUX->ant=CAB;
        CAB=AUX;
    }
}

void extraer(void)
{
    if (CAB==NULL) return;
    AUX=CAB;
    CAB=CAB->ant;
    free(AUX);
}

void visualizar(void)
{
    if (CAB==NULL) return;
     system("cls");
    AUX=CAB;
    while (AUX!=NULL)
    {
        cout << "Nombre: " << AUX->nombre << endl;
        AUX=AUX->ant;
    }
    getch( );
}


Gracias de antemano!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090427/5e0b6404/attachment.html>


Más información sobre la lista de distribución Cconclase