Filas em C
Publicado por Ivan Rocha 16/07/2007
[ Hits: 13.515 ]
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; } } }
lnx.c (programa em C, simples)
EXPRESSÕES ARITMÉTICAS - PARTE 1
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
PIP3 - erro ao instalar módulo do mariadb para o Python (2)
converter algoritmo C++ em C? (0)
Falha com leitor de digitais no Ubuntu: sugestões? (0)