Pilhas em C
Publicado por Ivan Rocha 18/07/2007
[ Hits: 6.483 ]
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; }
Arquivo introdutório para chamadas de funções
Script Acadêmico - Matrizes em C
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta