Enviado em 20/09/2017 - 18:35h
Boa noite companheiros, tenho um trabalho pra entregar amanha sobre alocação em pilha. Eu preciso acrescentar as funções:
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
#define FALSE 0
#define TRUE 1
#define FIM 0
#define EMPILHAR 1
#define DESEMPILHAR 2
#define LISTAR 3
int obterOpcao(void)
{
int opcao;
printf("MENU\n");
printf("%2d - FIM\n", FIM);
printf("%2d - EMPILHAR\n", EMPILHAR);
printf("%2d - DESEMPILHAR\n", DESEMPILHAR);
printf("%2d - LISTAR conteudo na pilha\n", LISTAR);
printf("Opcao: ");
scanf("%d", &opcao);
putchar('\n');
return opcao;
}
int vazia(int proxTopo)
{
return proxTopo == 0;
}
int esgotada(int proxTopo)
{
return proxTopo == MAX;
}
int empilhar(int valor, int *pProxTopo, int pilha[])
{
if (esgotada(*pProxTopo)) return FALSE;
else
{
pilha[(*pProxTopo)++] = valor;
return TRUE;
}
}
int desempilhar(int *valor, int *pProxTopo, int pilha[])
{
if (vazia(*pProxTopo)) return FALSE;
else
{
*valor = pilha[--(*pProxTopo)];
return TRUE;
}
}
int listar(int proxTopo, int pilha[])
{
if (vazia(proxTopo)) return FALSE;
else
{
putchar('\n');
while (proxTopo > 0)
{
proxTopo--;
printf("%03d [%6d]\n", proxTopo, pilha[proxTopo]);
}
return TRUE;
}
}
int main(void)
{
int opcao, pilha[MAX], proxTopo = 0, valor;
while ((opcao = obterOpcao()) != FIM)
{
switch (opcao)
{
case EMPILHAR:
printf("INSIRA O VALOR: ");
scanf("%d", &valor);
if (empilhar(valor, &proxTopo, pilha))
printf("VALOR EMPILHADO\n\n");
else printf("Operacao frustrada - pilha esgotada...\n\n");
break;
case DESEMPILHAR:
if (desempilhar(&valor, &proxTopo, pilha))
printf("Valor %d desempilhado\n", valor);
else printf("Operacao frustrada - pilha vazia...\n\n");
break;
case LISTAR:
if (listar(proxTopo, pilha)) putchar('\n');
else printf("Operacao frustrada - pilha vazia...\n\n");
break;
}
}
return 0;
}
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (1)
O que você está ouvindo agora? [2] (180)