Codigo Pilas en C




Ejemplo de pilas:
Realiza la declaración de la pila
Agrega elementos a la pila
Imprime la pila


CODIGO:

/*PROGRAMA : PILA1.CPP.- PROGRAMA QUE FORMULA Y OPERA UNA PILA   */

#include 
#include 
#include 

struct pilaNodo
  {
       int dato;
       struct pilaNodo *sigPtr;
  };

typedef struct pilaNodo PILANODO;
typedef PILANODO *PILANODOPTR;

void push(PILANODOPTR *, int);
int pop(PILANODOPTR *);
int vacio(PILANODOPTR);
void print_pila(PILANODOPTR);
void pausa(void);

main()
{
   PILANODOPTR pilaPtr = NULL;
   int opcion = 0, value, digito;

   while (opcion != 4)
    {
       
       printf("%s\n%s\n%s\n%s\n%s\n",
  "  ELIGE ALGUNA DE LAS SIGUIENTES OPCIONES :",
  "  1. REALIZA UN PUSH A LA PILA",
  "  2. REALIZA UN POP A LA PILA",
  "  3. Realiza la multiplicacion por 2",
  "  4. FIN DE PROGRAMA");
  printf("? ");
  scanf("%d",&opcion);

  switch (opcion)
    {
    case 1:
   printf(" TECLEA UN DIGITO : ");
   scanf( "%d",&value);
   push(&pilaPtr,value);
   print_pila(pilaPtr);
   pausa();
   break;

    case 2:
  if (!vacio(pilaPtr))
     printf(" EL DATO(DIGITO) EXTRAIDO ES %d.\n",pop(&pilaPtr));
  print_pila(pilaPtr);
  pausa();
  break;
    case 3:
  if (!vacio(pilaPtr))
    {
      digito = pop(&pilaPtr);
      printf(" EL Digito EXTRAIDO ES %d.\n", digito);
      digito = 2 * digito;
      printf(" EL producto de digito * 2 es : %d.\n", digito);
    }
  printf("\n  La pila queda:");
  print_pila(pilaPtr);
  pausa();
  break;
  }
   }
   printf("< FIN DE LA CORRIDA >");
   return(0);
}

void pausa(void)
{
   printf("\n Pulsar cualquier tecla para continuar ..:");
   getch();
}

void push(PILANODOPTR *topptr, int info)
{
 PILANODOPTR nuevoPtr;
 nuevoPtr = (struct pilaNodo *) malloc(sizeof(PILANODO));
 if (nuevoPtr) {
    nuevoPtr->dato = info;
    nuevoPtr->sigPtr = *topptr;
    *topptr = nuevoPtr;
 }
 else
     printf("%d NO PUDE INSERTARSE, NO HAY MEMORIA DISPONIBLE\n", info);
}


int pop(PILANODOPTR *topptr)
{
 PILANODOPTR tempptr;
 int popvalue;
 tempptr = *topptr;
 popvalue = (*topptr)->dato;
 *topptr = (*topptr)->sigPtr;
 free(tempptr);
 return popvalue;
}


int vacio(PILANODOPTR topptr)
{
 return !topptr;
}


void print_pila(PILANODOPTR currentptr)
 {
   if (currentptr == NULL)
     printf("  LA PILA SE ENCUENTRA VACIA.\n\n");
   else
     {
       printf("  EN LA PILA SE ENCUENTRA :\n");
       while (currentptr != NULL) {
   printf("%d --> ", currentptr->dato);
   currentptr = currentptr->sigPtr;
     }
       printf("  NO EXISTE NADA\n\n");
 }
}

Share on Google Plus
    Blogger Comment

0 comentarios:

Publicar un comentario