Pilhas em C
Publicado por Ivan Rocha 18/07/2007
[ Hits: 6.648 ]
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; }
Verificando se um número é primo.
Algoritmo em C - Ordenação por Seleção
Jogo da velha, para 2 jogadores, bem simples
Nenhum coment�rio foi encontrado.
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)