Filas em C
Publicado por Ivan Rocha 16/07/2007
[ Hits: 13.557 ]
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;
}
}
}
Programa simples em C++ para manipular dados de usuários!
Ordenar vetor com algoritmo Insertion Sort
Calculadora de operadores lógicos
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Trazendo de volta o Serviços em Segundo Plano no Plasma6
É normal não gostar de KDE? (21)
Servidor para arquivos e banco de dados (4)
780 mil usuários do Janelas baIxaram Linux em um mês (4)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (12)









