Pilha com alocação estática
Publicado por Thiago 14/06/2007
[ Hits: 8.468 ]
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; }
[C++] remover todos os multiplos de 3
Bhaskara - Cálculo de raízes de equações do segundo grau
gramquilo.c - Transforma grama em quilo
3025 -> 30 + 25 = 55 -> 55*55 = 3025
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Linux Mint nao reconhece segundo monitor. (1)
Copiar uma pasta 100% fiel a original? (6)