Buscar

Fila-lista (estática)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
int const tamanho_maximo=1000;
int frente, tras;
int fila[tamanho_maximo];
void fila_construtor()
{
 frente=0;
 tras=-1;
}
bool fila_vazia()
{	
 if(frente>tras)
	{
		return true;
 }
	else
	{
 return false;
 } 
}
bool fila_cheia()
{ 
 if(tras==tamanho_maximo-1)
	{
 return true;
 }
	else
	{
 return false;
 } 
}
void fila_organizar()
{
	int indice;
	if(frente>0)
	{
 for(indice=0;indice<tras;indice++)
		{
 fila[indice]=fila[indice+1];
 }
 frente--;
 tras--;
 }
}
int fila_mostrar_tamanho()
{
 return(tras-frente);
}
bool fila_obter(int &valor)
{
 if(fila_vazia())
	{
 return false;
 }
	else
	{
 valor=fila[frente];
 return true;
 } 
}
bool fila_inserir_na_posicao(int posicao)
{
 int indice, valor;
	if(fila_cheia()||posicao>fila_mostrar_tamanho())
 {
 return false;
 }
 else
 {
 	printf("\n Digite o valor que deseja inserir: ");
 	scanf("%i", &valor);
		for(indice=fila_mostrar_tamanho();indice>=posicao;indice--)
 	{
 	fila[indice+1]=fila[indice];
 }
 	fila[posicao]=valor; 
 	tras++; 	
 	printf("\n O número %i foi inserido na posição %i! \n", valor, posicao);
 	return true;
 }
}
bool fila_remover_a_posicao( int posicao)
{
 int indice, valor;
	if(fila_vazia())
	{
		return false;
 }
	else
	{
 if(posicao>frente&&posicao<tras)
	 {
		 valor=fila[posicao];
		 for(indice=posicao;indice<tras;indice++)
 {
 fila[indice]=fila[indice+1];
 tras--;
 }
 printf("\n A posição %i foi removida! \n\n", posicao);
 }
 return true;
 }
}
int fila_imprimir_lista(void)
{	
	int contador=fila_mostrar_tamanho();	
	if(contador==0)
	{
 printf("\n A fila está vazia! \n");
 printf("\n");
 }
	else
	{
		while(contador!=0)
		{		
			printf(" %i -> ", fila[contador]);
			contador--;
		}
		printf("NULL\n");
		printf("\n");
	}	
}
bool fila_buscar_valor(int valor)
{
 int indice, posicao;
 if(fila_vazia())
	{
		return false;
 }
	else
	{
 for(indice=frente;indice<tras;indice++)
		{
			if(fila[indice]==valor)
			{
			 posicao=indice;
			 printf("\n Número %i encontrado na posição %i\n", valor, posicao);
		 }
 }
 return true;
 }
}
bool fila_enfileirar(int valor)
{	
 char opcao='s';
	if(fila_cheia())
	{
 return false;
 }
	else
	{ 
 	printf("\n Digite um número para enfileirar: ");
 	scanf("%i", &valor);
 tras++;
			fila[tras]=valor;
			printf("\n Deseja continuar enfileirando?(s/n)");
 	scanf("%s", &opcao);
 	if(opcao=='s')
 	{
 		fila_enfileirar(valor); 
			}
			else
			{
			 system("pause");
				system("cls"); 
			}
 return true;
 } 
}
bool fila_desenfileirar(int valor)
{
	int opcao='s';
	if(fila_vazia())
 {
	 return false;
 }
	else
	{
		valor=fila[frente];
 frente++;
 fila_organizar();
 }
 printf("\n Valor retirado! \n");
 printf("\n Deseja continuar desenfileirando?(s/n)");
 scanf("%s", &opcao);
 if(opcao=='s')
 {
 fila_desenfileirar(valor); 
	}
	else
	{
		system("pause");
		system("cls"); 
	}
	return true;
}
bool fila_substituir_na_posicao(int posicao)
{	
 int indice, valor;
	if(fila_vazia())
	{
		return false;
 }
	else
	{
 if(posicao>frente&&posicao<=tras)
 {
	 printf("\n Digite um número: ");
		 scanf("%i", &valor);
		 for(indice=tras+1;indice>posicao;indice--) 
		 { 
		 fila[posicao]=valor;
 }
 printf("\n O número %i foi inserido na posição %i! \n\n", valor, posicao);
 return true;
 }	 
 }
}
int main(void)
{
 setlocale(LC_ALL,"Portuguese"); 
 int opcoes, numero, fila;
 {
 printf("\n\n\n\n\n\t\t\t FILA LISTA \n\n"); 
 printf("\t\t\t [1] Inserir posição \n"); 
 printf("\t\t\t [2] Remover posição 		\n"); 
 printf("\t\t\t [3] Exibir lista 	\n");
 printf("\t\t\t [4] Pesquisar 		\n");
 printf("\t\t\t [5] Mostrar tamanho 		\n");
 printf("\t\t\t [6] Enfileirar 		\n");
 printf("\t\t\t [7] Desinfileirar 		\n");
 printf("\t\t\t [8] Substituir posição 		\n");
 printf("\t\t\t [9] Sair 		\n");
 printf("\t\t\t \n");
 printf("\t\t\t opção >> ");
 scanf("%i", &opcoes); 
 switch(opcoes)
 {
 case 1:
 {
				printf("\n Digite a posição em que deseja inserir o número: ");
				scanf("%i", &numero);
				fila=fila_inserir_na_posicao(numero);	
				system("pause"); 
 system("cls");
 return main();
 break; 
 } 
 case 2:
 {
 printf("\n Digite a posição em que deseja remover: ");
 scanf("%i", &numero);
				fila=fila_remover_a_posicao(numero); 
 system("pause"); 
 system("cls");
 return main();
 break; 
 } 
 case 3:
 {
 printf("\n Listagem da fila: \n\n");
 fila=fila_imprimir_lista(); 	 
 system("pause"); 
 system("cls");
 return main();
 break; 
 } 
 case 4:
 {
				printf("\n Digite o valor que está buscando: ");
				scanf("%i", &numero);
				fila=fila_buscar_valor(numero); 
 system("pause"); 
 system("cls");
 return main();
 break; 
 } 
 case 5:
 {
 printf("\n O tamanho da fila é: %i", fila_mostrar_tamanho());
 	printf("\n\n");
 system("pause"); 
 system("cls");
 return main();
 break; 
 } 
			case 6:
			{				
				fila=fila_enfileirar(numero); 
 system("cls");
 return main(); 				
			}
			case 7:
			{
				fila=fila_desenfileirar(numero);
				system("cls");
 return main(); 				
			} 
			case 8:
			{
				printf("\n Digite a posição em que deseja trocar o valor: ");
				scanf("%i", &numero);
				fila=fila_substituir_na_posicao(numero);	
				system("pause"); 
 system("cls");
 return main();
 break; 
			} 
 case 9:
 {
 printf("\n Finalizando o programa: ");
				exit(0);
 break; 
 } 
 default:
 {
 printf("\n Opção inválida, tente novamente... \n\n");
 system("pause"); 
 system("cls");
 return main();
 }
 }
 } 
}

Teste o Premium para desbloquear

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

Outros materiais