Logo Passei Direto
Buscar

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);
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?