Pilhas em C
Publicado por Ivan Rocha 18/07/2007
[ Hits: 6.613 ]
Homepage: http://homes.dcc.ufba.br/~ivan062/bahia
Pilhas em C como um cadastro de funcionários, com as funções Empilha, Desempilha e Topo, utilizando apontadores.
# include <stdio.h> # include <stdlib.h> # include <string.h> typedef struct registro{ char nome[20]; int num; float salario; struct registro *embaixo; }Pilha; /*FUNCAO INICIALIZA*/ void inicializa(Pilha **pilha){ *pilha = NULL; } /*FUNCAO PRA A LIMPEZA DO BUFFER DO TECLADO*/ void flush_in() { int ch; while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){} } /*FUNCAO TOPO*/ void topo(Pilha *pilha){ if (pilha != NULL){ printf("\n|TOPO|\n\n"); printf("Nome: %s\n", pilha -> nome); printf("Numero: %d\n", pilha -> num); printf("Salario: %.2f\n", pilha -> salario); getchar(); //flush_in(); } } /*FUNCAO VAZIA*/ int vazia(Pilha *pilha){ if(pilha == NULL){ return (1); }else return (0); } /*FUNCAO EMPILHA*/ void empilha(Pilha **pilha){ Pilha *novoFunc; int numero; printf("\nEmpilha quantos? "); scanf("%d", &numero); for(numero; numero > 0; numero--){ novoFunc = ((Pilha *)malloc(sizeof(Pilha))); printf("\n|Funcionario|\n\n"); printf("Nome: "); scanf("%s", novoFunc -> nome); flush_in(); printf("Codigo: "); scanf("%d", &novoFunc -> num); flush_in(); printf("Salario: "); scanf("%f", &novoFunc -> salario); novoFunc -> embaixo = NULL; if(vazia(*pilha)){ *pilha = novoFunc; }else{ novoFunc -> embaixo = *pilha; *pilha = novoFunc; } } } /*FUNCAO DESEMPILHA*/ void desempilha(Pilha **pilha){ Pilha *pont; int numero; printf("\nDesempilha quantos? "); scanf("%d", &numero); flush_in(); for(numero; numero > 0; numero--){ if(!vazia(*pilha)){ pont = *pilha; *pilha = (*pilha) -> embaixo; free(pont); } } } /*FUNCAO CONSULTA*/ void consulta(Pilha *pilha){ int numero; printf("\nNumero: "); scanf("%d", &numero); if(pilha != NULL){ while(pilha){ if(pilha -> num == numero){ printf("\nNome: %s\n", pilha -> nome); printf("Codigo: %d\n", pilha -> num); printf("Salario: %.2f\n", pilha -> salario); getchar(); flush_in(); break; }else pilha = pilha -> embaixo; } } } /*FUNCAO PRINCIPAL*/ int main(){ char op[1]; Pilha *pilha; inicializa(&pilha); for(;;){ system("clear"); printf("===== Programa PILHA =====\n\n"); printf("Sequencia de Operacoes:\n\n"); printf("a. Empilha; \n"); printf("b. Desempilha; \n"); printf("c. Consulta;\n"); printf("d. Topo;\n"); printf("s. SAIR.\n\n"); printf("OPCAO: "); scanf("%s", op); flush_in(); switch(toupper(op[0])){ case 'A':{ empilha(&pilha); }break; case 'B':{ desempilha(&pilha); }break; case 'C':{ consulta(pilha); }break; case 'D':{ topo(pilha); }break; case 'S':{ printf("\nTem certeza? (S/N) "); scanf("%s", op); flush_in(); if (toupper(op[0]) == 'S'){ system("clear"); exit(0); } }break; } } return 0; }
Calcular a potência de um número.
Passar uma string pra caixa alta.
Nenhum coment�rio foi encontrado.
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
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)
como instalo panfrost-dri e o driver panfrost fork , ou panfrost (16)
problema no debian que poderia ser corrigido por comando? (12)
Usar uma VM dentro do meu notebook como firewall para um dispositivo e... (0)
Eu tive esse erro aqui depois de de baixar o HyprLand Ubuntu na versão... (1)