Pilha com alocação estática
Publicado por Thiago 14/06/2007
[ Hits: 8.538 ]
Todos comentários estão embutidos no código.
(=
/****************************************************************************************** * Programa: pilha2.c * Autor: thiagoamm (thyeigur) * e-mail: harakiri190@yahoo.com.br * Data: 07/09/2006 * Alteracao: * * OBS: Este programa foi baseado em um pdf que encontrei na net sobre Estruturas de Dados * da PUC - RIO. * Estava estudando PILHA COM ALOCACAO ESTATICA. * Fiz algumas modificacoes na tentativa de facilitar a vida de quem esta comecando * assim como eu. * Espero ter agregado algum valor (= * *******************************************************************************************/ /******************************** * Diretivas de pre-processador *******************************/ /* Inclusao de bibliotecas */ #include <stdio.h> #include <stdlib.h> /* Definindo macro */ #define TOP 5 /* Topo da pilha */ #define BASE -1 /* Base da pilha */ /********************************* * Definindo Registro (Estrutura) ********************************* /* Definindo a estrutura da pilha como um novo tipo de dados (abstrato) */ typedef struct { int pos; /* Indexa a posicao da pilha */ float vet[TOP]; /* Vetor onde sao armazenados os elementos */ } Stack; /**************************** * Prototipos de funcoes ****************************/ Stack *create(void); float pop(Stack *p); int stack_void(Stack *p); /**************************** * Prototipos de sub-rotinas ****************************/ void push(Stack *p, int e); /************************************ * Funcao principal (execucao ************************************/ int main(void) { Stack *pilha; int elem, op; char sair = 'n'; /* Criando a pilha */ pilha = create(); do { system("clear"); printf("\n\t\t\t\t_________________________________________________"); printf("\n\t\t\t\t| M E N U |"); printf("\n\t\t\t\t|_______________________________________________|"); printf("\n\t\t\t\t| |"); printf("\n\t\t\t\t| 1 - Empilhar |"); printf("\n\t\t\t\t| 2 - Desempilhar |"); printf("\n\t\t\t\t| 3 - Sair |"); printf("\n\t\t\t\t| |"); printf("\n\t\t\t\t|_______________________________________________|"); printf("\n\nOpcao: "); scanf("%d",&op); switch (op) { case 1: printf("\nElemento: "); scanf("%d",&elem); push(pilha, elem); break; case 2: pop(pilha); break; case 3: sair = 's'; break; default: printf("\nOpcao invalida!"); } } while (sair != 's'); system("clear"); /* No Windows e system("cls"); */ puts("..................................................................................."); puts(". Autor: thyeigur (thiagoamm) ."); puts(". e-mail: harakiri190@yahoo.com.br ."); puts(". Seu comentario ou sugestao sendo construtivos sao muito importantes para mim. ."); puts("..................................................................................."); getchar(); getchar(); system("clear"); return(0); } /******************************** * Definicoes de funcoes ********************************/ /* Esta funcao e um ponteiro. Sua tarefa e criar uma referencia (apontar) para uma estrutura do tipo Pilha e retornar essa referencia atraves de seu nome. */ Stack *create(void) { Stack *p = (Stack*) malloc( sizeof(Stack) ); p->pos = BASE; /* pilha vazia, posicao igual a base, 0 elementos. */ return p; } /* Funcao que verifica se a pilha esta vazia */ int stack_void(Stack *p) { return(p->pos == BASE); /* retorna 1 se VERDADEIRO */ } /* Funcao que desempilha elementos */ float pop(Stack *p) { int e; if (stack_void(p)) { system("clear"); printf("\n\n\t\t\t\tPILHA VAZIA!\n\n"); exit(1); } /* Retira elemento do topo */ e = p->vet[p->pos - 1]; /* Muda o topo */ p->pos--; return(e); } /*********************************** * Definicao de sub-rotinas ***********************************/ /* Sub-rotina que empilha elementos */ void push(Stack *p, int e) { p->pos++; /* Muda a base */ if (p->pos == TOP) { system("clear"); printf("\n\n\t\t\t\tESTOURO DE PILHA!\n\n\n\n"); exit(1); /* aborta execucao do programa */ } /* Armazena elemento na pilha */ p->vet[p->pos] = e; return; }
programa que mostra o uso de registros em C. Cadastra 10 funcionarios
Parte 6 (Ordenando Strings) - sessão de estudo sobre MATRIZES.
Nenhum comentário foi encontrado.
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Os empreguim de meu Deus estão cada vez mais tecnológicos (0)
Alguém poderia me ajudar a escolher peças pra montar um desktop? (28)
Meu PC perde o boot de várias distros Linux após ficar desligado (4)