Filas em C
Publicado por Ivan Rocha 16/07/2007
[ Hits: 13.446 ]
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; } } }
Barra de progresso em forma de "roda"
Utilização de Ponteiros em C (2)
Parte 7 (Pesquisa) - Sessão de estudo sobre MATRIZES.
Nenhum coment�rio foi encontrado.
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Sem espaço na partição home (0)
O que você está ouvindo agora? [2] (190)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (5)
warsaw parou de funcionar após atualização do sistema (solução) (10)