Filas em C
Publicado por Ivan Rocha 16/07/2007
[ Hits: 13.376 ]
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; } } }
Checar letras A em string e proibir numeros
Nenhum comentário foi encontrado.
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Discord connection refused (0)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (4)
Não Consigo instalar o cli-visualizer no Ubuntu 24.04 (2)
compilação samba 4.22 rock linux 9.5 (1)
Posso instalar usar o grub sem ter linux instalado, para iniciar o win... (1)