sábado, 2 de octubre de 2010

QUIZ

*Nombre: Primer elemento
 Funcion: Muestra el primer elemento de la pila
 Pre: p={ }
        p={e1,e2,e3...en}

 Post: "Pila vacia"
          p={e1}

*Nombre: Ordenar elemento
 Funcion: Ordena los elementos de la pila 

 Pre: p={ }
        p={e1,e2,e3...en}

 Post: "Pila vacia"
          p={e1>e2>e3....>en}


#include<stdio.h>
#include<conio.h>
#include<iostream.h>


struct nodoPila


{   int dato;
     nodoPila *sig;
};
struct nueva
{
    int dato;
    struct nueva *sig;
};struct nueva *primero,*ultimo;


int menu()

{   int opc;
     clrscr();
     cout<<"       MENU PRINCIPAL";
     cout<<"\n1. Inicializar Pila";
     cout<<"\n2. Apilar (push)";
     cout<<"\n3. Recorrer Pila";
     cout<<"\n4. Desapilar (pop)";
     cout<<"\n5. Contar elementos";
     cout<<"\n6. Numero mayor";
     cout<<"\n7. Primer elemento";
     cout<<"\n8. Mostrar ordenada";
     cout<<"\n9. Salir";
     cout<<"\n\n\nOpcion: ";
     cin>>opc;
     return opc;

}



void inicializar(struct nodoPila **);

void desapilar(struct nodoPila **);
void recorrer(struct nodoPila **);
void apilar(struct nodoPila **, int x);
void recorrer(struct nodoPila **tope)


{  struct nodoPila *aux;
      if(*tope==NULL)
             cout<<"\nPila Vacia. ";
      else
         {  aux=*tope;
             while(aux!=NULL)
             {  cout<<"Elemento: "<<aux->dato<<"\n";
                     aux=aux->sig;
             }

         }
      getch();

}


 //Funcion inicializar la pila


void inicializar(struct nodoPila **tope)


 {   *tope=NULL;
      cout<<"\nPila Inicializada.";
      getch();
}


//Funcion apilar


void apilar(struct nodoPila **tope, int dat)

{    struct nodoPila *aux;
      aux=new nodoPila;
      if(aux==NULL)
      {   cout<<"\nMemoria Insuficiente. ";
            getch();
      }

      aux->dato=dat;
      aux->sig=*tope;
      *tope=aux;
}


//Funcion desapilar


void desapilar(struct nodoPila **tope)
{   struct nodoPila *aux;
      if(*tope==NULL)
             cout<<"Pila Vacia";
      else
            {   aux=*tope;
                 cout<<"Elemento eliminado: "<<(*tope)->dato;
                 *tope=(*tope)->sig;
                  delete aux;
            }
      getch();

}


//Funcion Contar


void contar(struct nodoPila **tope)
 { clrscr();
     struct nodoPila *aux;
     int z=0;
     if(*tope==NULL)
             cout<<"Pila Vacia";
     else
            { aux=*tope;
                while(aux!=NULL)
             {   z++;
                     aux=aux->sig;
             }
                cout<<"\nEl numero de elementos encontrados es : "<<z<<"\n";
      }
     getch();
 }


//Funcion del mumero mayor

void nummayor(struct nodoPila **tope)
 {  clrscr();
     struct nodoPila *aux;
     int nmy=0;
     if(*tope==NULL)
          cout<<"Pila vacia";
     else
          {  aux=*tope;
              while(aux!=NULL)
          {  if(nmy<aux->dato)
                     nmy=aux->dato;
                aux=aux->sig;
          }
        cout<<"El numero mayor es: "<<nmy;
     }
    getch();
}


//Funcion Primer elemento


void primerelemento(struct nodoPila **tope )
 { clrscr();
     struct nodoPila *aux;
     int dat=0;
     aux=*tope;
     if(aux==NULL)
             cout<<"Pila Vacia";
     else{
        while(aux!=NULL){
            dat=aux->dato;
            aux=aux->sig;
        }
        cout<<"\nEl primer elememto es  "<<dat;
     }
     getch();
 }




 //Funcion ordenar  Elementos


void ordenar(struct nodoPila **tope)
 {  struct nodoPila *auxi;
    struct nueva *nue,*aux,*ant;
    if(*tope==NULL)
        cout<<"Pila vacia";
    else{
        auxi=*tope;
        while(auxi!=NULL){
            if(primero==NULL){
                primero=new nueva;
                primero->dato=auxi->dato;
                primero->sig=NULL;
                ultimo=primero;
            }
            else
            {   nue=new nueva;
                nue->dato=auxi->dato;
                aux=primero;
                while(aux!=NULL&&aux->dato<nue->dato){
                    ant=aux;
                    aux=aux->sig;
                }
                if(aux==primero){
                    nue->sig=primero;
                    primero=nue;
                }else{
                    if(aux==NULL){
                        ultimo->sig=nue;
                        nue->sig=NULL;
                        ultimo=nue;
                    }else
                        nue->sig=aux;
                        ant->sig=nue;
                }
            }
            auxi=auxi->sig;
        }
        aux=primero;
        while(aux!=NULL){
            cout<<aux->dato<<"\t";
            aux=aux->sig;
        }
        getch();
    }
}

int main()


{   struct nodoPila *tope;
      int dat,opc;
     do
     {   opc=menu();
          switch(opc)
          {
                case 1:{inicializar(&tope);break;}
                case 2:{  cout<<"\nEntre el dato: ";
                                cin>>dat;
                                apilar(&tope,dat);
                                 break;
                              }
                case 3:{recorrer(&tope);break;}
                case 4:{desapilar(&tope);break;}
                case 5:{contar(&tope);break;}
                case 6:{nummayor(&tope);break;}
                case 7:{primerelemento(&tope);break;}
                case 8:{cout<<" La lista en Orden es\n\n";ordenar(&tope);break;}

             }

      }while(opc!=9);
     return 0;

}

No hay comentarios:

Publicar un comentario