Filas em C
Publicado por Ivan Rocha 16/07/2007
[ Hits: 13.420 ]
Homepage: http://homes.dcc.ufba.br/~ivan062/bahia
Implementação de filas em C, com funções enfileira, desenfileira, e consulta.
# include <stdio.h> # include <stdlib.h> # include <string.h> typedef struct registro{ char nome[20]; int num; float salario; struct registro *frente; }Fila; /*FUNCAO PRA A LIMPEZA DO BUFFER DO TECLADO*/ void flush_in() { int ch; while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){} } /*FUNCAO INICIALIZA*/ void inicializa(Fila **fila, Fila **ult){ *fila = NULL; *ult = NULL; } /*FUNCAO ENFILEIRA*/ void enfileira(Fila **fila, Fila **ult){ Fila *novoFunc; int numero; printf("\nEnfileirar Quantos? "); scanf("%d", &numero); flush_in(); for(numero; numero > 0; numero--){ novoFunc = ((Fila *)malloc(sizeof(Fila))); 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 -> frente = NULL; if(*fila == NULL){ *fila = novoFunc; *ult = novoFunc; }else{ (*ult) -> frente = novoFunc; *ult = (*ult) -> frente; } } } /*FUNCAO DESENFILEIRA*/ void desenfileira(Fila **fila, Fila **ult){ Fila *pont; int numero; printf("\nDesenfileirar Quantos? "); scanf("%d", &numero); flush_in(); for(numero; numero > 0; numero--){ if(*fila != NULL){ if(*fila == *ult){ pont = *ult; *fila = NULL; *ult = NULL; free(pont); }else{ pont = *fila; *fila = (*fila) -> frente; free(pont); } } } } /*FUNCAO CONSULTA*/ void consulta(Fila *fila, Fila *ult){ int numero; printf("\nNumero: "); scanf("%d", &numero); if(fila != NULL){ while(ult -> frente != fila){ if(fila -> num == numero){ printf("\nNome: %s\n", fila -> nome); printf("Codigo: %d\n", fila -> num); printf("Salario: %.2f\n", fila -> salario); getchar(); flush_in(); break; }else fila = fila -> frente; } } } /*FUNCAO PRINCIPAL*/ int main(){ char op[1]; Fila *fila; Fila *ult; inicializa(&fila, &ult); for(;;){ system("clear"); printf("===== Programa FILA =====\n\n"); printf("Sequencia de Operacoes:\n\n"); printf("a. Enfileira; \n"); printf("b. Desenfileira; \n"); printf("c. Consulta;\n"); printf("s. SAIR.\n\n"); printf("OPCAO: "); scanf("%s", op); flush_in(); switch(toupper(op[0])){ case 'A':{ enfileira(&fila, &ult); }break; case 'B':{ desenfileira(&fila, &ult); }break; case 'C':{ consulta(fila, ult); }break; case 'S':{ printf("\nTem certeza? (S/N) "); scanf("%s", op); flush_in(); if (toupper(op[0]) == 'S'){ system("clear"); exit(0); } }break; } } }
Conversão do número de dias em anos (meu segundo programa em C)
Parte 3 - Sessão de estudo sobre MATRIZES.
Criando um Quadrado com asteriscos
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
Quebra de linha na data e hora no Linux Mint
Organizando seus PDF com o Zotero
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)
Problema com Conexão Outlook via Firewall (OpenSUSE) com Internet Fibr... (5)