domingo, 31 de mayo de 2015

PILAS EN C++



PILAS
Son estructuras de datos que tienen dos operaciones básicas: push (para insertar un elemento) y pop (para extraer un elemento).

Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse.








CODIGO DE PILAS EN C++

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<alloc.h>

struct nodo
{
       int nro;        // en este caso es un numero entero
       
       struct nodo *siguiente;
};

typedef struct nodo *Pila; //estamos  definiendo  tipo de  datos  a  struct nodo


//Funciones con pilas
  void push( Pila &p, int valor );
  int pop( Pila &p );
  void mostrarpila( Pila p );
  void destruirpila( Pila &p);

//*****************************

int main()
{
    Pila pila = NULL;//ya  aviamos  declarado el  tipo lista  y lo ponemos  null
int op,x,n,npop;

    do
    {
     system("cls");
          printf("***MENU***\n\n");
          printf("1. Apilar\n");
          printf("2. Desapilar\n");
          printf("3. Mostrar pila\n");     //menu para pilas
          printf("4. Destruir pila\n");
          printf("5. Salir\n\n");
          printf("Digite la opcion: ");
          scanf("%d",&op);
          switch(op)
     {
                case 1:
                    do 
                    {
          system("cls");
          printf("Digite  Cero (0) para salir\n");
          printf("Digite el dato que desea agregar:");
          scanf("%d",&x);
                       if (x!=0)
                  push(pila,x);//le  enviamos a apilar el valor de  (x)
                  printf("El dato ha sido apilado\n");
                    }while (x!=0);
                    system("pause");
           break;

               case 2:
                   mostrarpila(pila);
           npop=pop(pila); //para desapilar dato
           printf("El dato a sido desapilado\n");
           mostrarpila(pila);
           system("pause");
              break;

     case 3:
                   printf("Mostrando Pila\n");
              if(pila!=NULL)
                       mostrarpila(pila); //muestra el estado actual de la pila
                   else
                       printf("La Pila esta vacia...\n");
              system("pause");
              break;

     case 4:
                   mostrarpila(pila);
                   destruirpila(pila);
                   printf("La pila ha sido destruida");
          system("pause");
             break;
            
            case 5:
                  printf("HA SALIDO DEL PROGRAMA!\n");
            break;
            
   default:
   printf("Opcion no valida!\n");
   system("pause");
   }
} while(op!=5);


system("pause");
     return 0;
}

// PARA APILAR DATOS

void push( Pila &p, int valor )
{
     Pila aux;
     aux = new(struct nodo);  // apuntamos al nuevo nodo creado
     aux->nro = valor;
     
     aux->siguiente = p ;
     p = aux ;
}
// PARA DESAPILAR DATOS
int pop( Pila &p )
{
     int num ;
     Pila aux;
     
     aux = p ;
     num = aux->nro;   // asignamos el primer vamor de la pila
     
     p = aux->siguiente ;
     delete(aux);
     
     return num;
}

void mostrarpila( Pila p )
{
     Pila aux;
     aux = p;     // apunta al inicio de la lista
     
     while( aux !=NULL )
     {
            printf(" %d \t", aux->nro);
            aux = aux->siguiente;
     }    
}

/*                Eliminar todos los elementos de la pila      
------------------------------------------------------------------------*/
void destruirpila( Pila &p)
{
     Pila aux;
     
     while( p != NULL)
     {
           aux = p;
           p = aux->siguiente;
           delete(aux);
     }
}


No hay comentarios.:

Publicar un comentario