Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
fila.c //Lista FiFo - First In First Out #include <stdio.h> #include <stdlib.h> #include <stdbool.h> //declaração da estrutura typedef struct NoFilaInt{ int chave; struct NoFilaInt* prox; }NoFilaInt; typedef struct{ NoFilaInt* prim, *ult; }FilaInt; //protótipo de funções void Inicializar(FilaInt* f); _Bool Enfileirar(FilaInt* f,int x); _Bool Desenfileirar(FilaInt* f,int* x); void Imprimir(FilaInt* f); int main(int argc,char** argv){ int a,opcao,num; FilaInt y; for(;;){ printf("Menu de opções\n"); printf("1 - Inicializar Fila\n"); printf("2 - Enfileirar\n"); printf("3 - Desenfileirar\n"); printf("4 - Imprimir Fila\n"); printf("Opção: "); scanf("%d",&opcao); switch(opcao){ case 1: Inicializar(&y); printf("Concluido\n"); break; case 2: printf("Entrada: "); scanf("%d",&num); if(Enfileirar(&y,num)) printf("Enfileirou\n"); else printf("Nao enfileirou\n"); break; case 3: if(Desenfileirar(&y,&a)) printf("O número %d saiu da fila\n",a); else printf("Não desenfileirou\n"); break; case 4: Imprimir(&y); break; default: printf("Opcao invalida. Tente novamente\n"); } } return 0; } //funções void Inicializar(FilaInt* f){ f->prim=NULL; } _Bool Enfileirar(FilaInt* f,int x){ NoFilaInt* p=f->prim; if(!(p=(NoFilaInt*)malloc(sizeof(NoFilaInt)))) return false; if (!(f->prim)) f->prim=p; else f->ult->prox=p; p->chave=x; p->prox=NULL; f->ult=p; return true; } _Bool Desenfileirar(FilaInt* f,int* x){ NoFilaInt* p=f->prim; if (!(f->prim)) return false; *x=f->prim->chave; f->prim=f->prim->prox; free(p); return true; } void Imprimir2(FilaInt* f){ NoFilaInt* p=f->prim; if(f->prim){ do{ printf("%d - ",p->chave); p=p->prox; }while (p->prox!=NULL); printf("%d\n",f->ult->chave); } } void Imprimir(FilaInt* f){ NoFilaInt* p; if(f->prim) for(p=f->prim;p->prox!=NULL;p=p->prox) printf("%d - ",p->chave); }