Pilha – Implementação em Linguagem C

shape
shape
shape
shape
shape
shape
shape
shape

A pilha é uma das estruturas de dados utilizadas para diversas finalidades na computação. Ela é tida como uma estrutura de dados LIFO (Last in, First out), ou seja, o último elemento que entra na pilha é o primeiro a sair.

No nosso exemplo abaixo reproduzimos as operações:

  • PUSH – Insere um elemento na pilha.
  • POP – Retira um elemento da pilha.
  • DISPLAY – Exibe todos os elementos da pilha.

 

Nossa STRUCT stack possui duas variáveis:

 

  1. stk[MAXSIZE] – Vetor que armazena os valores na pilha. MAXSIZE é uma constante que define o tamanho da pilha.
  2. top – Variável que armazena a posição do ultimo elemento a entrar na pilha.

 

#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");
}

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *