Pila – Implementación del lenguaje C

shape
shape
shape
shape
shape
shape
shape
shape

La pila es una de las estructuras de datos utilizadas con diversos fines en informática. Se considera una estructura de datos LIFO (Last in, First out), lo que significa que el último elemento en entrar en la pila es el primero en salir.

En el siguiente ejemplo reproducimos las operaciones:

  • PUSH – Añade un elemento a la pila.
  • POP – Eliminar un elemento de la pila.
  • VISUALIZARMuestra todos los elementos de la pila.

 

Nuestra pila STRUCT tiene dos variables:

 

  1. stk[MAXSIZE] – Vector que almacena los valores en la pila. MAXSIZE es una constante que define el tamaño de la pila.
  2. top – Variable que almacena la posición del último elemento que entra en la pila.

 

#include <stdio.h>
#define MAXSIZE 5
 
struct stack
{
    int stk[MAXSIZE];
    int top;
};
typedef struct stack STACK;
STACK s;
 
void push(void);
int  pop(void);
void display(void);
 
void main ()
{
    int choice;
    int option = 1;
    s.top = -1;
 
    printf ("OPERAÇÕES DA PILHA\n");
    while (option)
    {
        printf ("------------------------------------------\n");
        printf ("      1    -->    PUSH               \n");
        printf ("      2    -->    POP               \n");
        printf ("      3    -->    DISPLAY               \n");
        printf ("      4    -->    SAIR           \n");
        printf ("------------------------------------------\n");
 
        printf ("Escolha uma opção\n");
        scanf    ("%d", &choice);
        switch (choice)
        {
        case 1:
            push();
            break;
        case 2:
            pop();
            break;
        case 3:
            display();
            break;
        case 4:
            return;
        }
        fflush (stdin);
        printf ("Deseja continuar? (0 para encerrar ou 1 para continuar)\n");
        scanf    ("%d", &option);
    }
}
/*  Adiciona elementos na pilha */
void push ()
{
    int num;
    if (s.top == (MAXSIZE - 1))
    {
        printf ("Pilha cheia\n");
        return;
    }
    else
    {
        printf ("Insira o elemento: \n");
        scanf ("%d", &num);
        s.top = s.top + 1;
        s.stk[s.top] = num;
    }
    return;
}
/*  Retira elementos da pilha */
int pop ()
{
    int num;
    if (s.top == - 1)
    {
        printf ("Pilha vazia\n");
        return (s.top);
    }
    else
    {
        num = s.stk[s.top];
        printf ("Elemento retirado = %dn", s.stk[s.top]);
        s.top = s.top - 1;
    }
    return(num);
}
/*  Exibe os valores da pilha */
void display ()
{
    int i;
    if (s.top == -1)
    {
        printf ("Pilha vazia\n");
        return;
    }
    else
    {
        printf ("\n Elementos na pilha: \n");
        for (i = s.top; i >= 0; i--)
        {
            printf ("%d\n", s.stk[i]);
        }
    }
    printf ("\n");
}

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *