Fila (FIFO)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Fila (FIFO)

Mensagem  Renancr em Seg 23 Maio 2011 - 22:21

Implemente as funções a seguir para a manipulação de uma estrutura de fila utilizando primeiramente vetores e depois lista dinâmica:

  • Incializar a fila

  • Insere elemento na fila

  • Remove elemento na fila

  • Verifica se a fila esta vazia


Fila dinâmica

Código:
#include <iostream>
using namespace std;

struct fila
         {
            int info;
            fila *prox;
            fila *ant;
         };

typedef struct fila l;

fila *inicializa();
int menu(fila *fim);
fila *insert(fila *inicio, fila *fim, int val);
fila *remove(fila *fim);
fila *request_new(fila *celula_ant);
void show_fila(fila *fim);

void main()
{
   fila *inicio, *fim;
   int op, x;

   inicio=inicializa();
   fim=inicializa();

   do{

      op=menu(fim);

      if(op == 1)
      {
         system("cls");
         cout<< "\n\nDigite o valor na fila\n\t";
         cin>> x;
         inicio=insert(inicio, fim, x);
         if(inicio->prox == NULL)
            fim=inicio;
         system("pause");
      }
      else
         if(op == 2)
         {
            system("cls");
            if(fim != NULL)
               fim=remove(fim);
            else
               cout<< "\n\n\nA fila esta vazia, nem um valor incerido ainda\n\n\n";

            if(fim == NULL)
               inicio=fim;
            system("pause");
         }

   }while(op != 3);
}

int menu(fila *fim)
{
   int op;

   do{
      system("cls");
      show_fila(fim);
      cout<< "\n\n\t1- Inserir valor na fila\n";
      cout<< "\t2- remove valor da fila\n";
      cout<< "\t3- Sair\n";
      cout<< "\n\tDigite a opcao desejada\n\t";
      cin>> op;
      if(op < 1 || op > 3)
      {
         system("cls");
         cout<< "\n\n\nO valor de sua opcao nao corresponde ao menu\n\n\n";
         system("pause");
      }
   }while(op < 1 || op > 3);
   return op;
}

fila *inicializa()
{
   return NULL;
}

fila *insert(fila *inicio, fila *fim, int val)
{
   inicio=request_new(inicio);
   inicio->info=val;
   return inicio;
}

fila *request_new(fila *celula_ant)
{
   fila *novo;
   novo=(fila*) malloc (sizeof(fila));
   novo->prox=celula_ant;
   novo->ant=NULL;
   if(celula_ant != NULL)
      celula_ant->ant=novo;
   return novo;
}

fila *remove(fila *fim)
{
   fila *prox;

   prox=fim;
   fim=fim->ant;
   if(fim != NULL)
      fim->prox=inicializa();
   free(prox);
   return fim;
}

void show_fila(fila *fim)
{
   fila *ant=fim;

   while(ant != NULL)
   {
      cout<< "\t\t" << ant->info<< endl;
      ant=ant->ant;
   }
}
avatar
Renancr

Mensagens : 118
Data de inscrição : 08/03/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum