segunda-feira, 8 de junho de 2009

Filas C++

#include "stdio.h"
#include "stdlib.h"
#include "sys/time.h"
#include "iostream"
#define TAM 1000
using namespace std;

typedef int Apontador;

typedef int TipoChave;

typedef struct {
TipoChave chave;
/* outros componentes */
} TipoItem;

typedef struct {
TipoItem Item[TAM];
Apontador Frente, Tras,TAMANHO;
} TipoFila;

int tamanho (TipoFila p)
{
return (p.TAMANHO);
}


void FFVazia(TipoFila *Fila)
{
Fila->Frente = 1;
Fila->Tras = Fila->Frente;
} /* FFVazia */

int Vazia(TipoFila Fila)
{
return (Fila.Frente == Fila.Tras);
} /* Vazia */

void Enfileira(TipoItem x, TipoFila *Fila)
{
if (Fila->Tras % TAM + 1 == Fila->Frente)
printf("ERRO!!!QUANTIDADE MAXIMA DE PROCESSOS NA ESPERA\n");
else { Fila->Item[Fila->Tras - 1] = x;
Fila->Tras = Fila->Tras % TAM + 1;
Fila ->TAMANHO++;
}

} /* Enfileira */

void Desenfileira(TipoFila *Fila, TipoItem *Item)
{
if (Vazia(*Fila))
printf("ERRO!!!\nNAO EXISTEM PROCESSOS\n");
else { *Item = Fila->Item[Fila->Frente - 1];
Fila->Frente = Fila->Frente % TAM + 1;
Fila ->TAMANHO--;
}
} /* Desenfileira */

void Imprime(TipoFila Fila)
{
int Aux;
for (Aux = Fila.Frente - 1; Aux <= (Fila.Tras - 2); Aux++) printf("PROCESSO DE NUMERO%12d\n", Fila.Item[Aux].chave); } /* Imprime */ /////////////////////////////////////////////////////////////////////////////////////////////////// int main(int argc, char *argv[]) { TipoFila fila; TipoItem item; int i=0, j, k, p, op; FFVazia(&fila); printf("DIGITE A SUA OPCAO\n(1)INSERIR UM PROCESSO\n(2)RETIRAR UM PROCESSO\n(3)IMPRIMIR A FILA DE PROCESSO NA ESPERA\n(4)TAMANHO DA FILA\n(5)SAIR\n\n"); scanf("%d",&op); do switch(op){ case 1: system("cls"); printf("DIGITE O NUMERO DO PROCESSO QUE DESEJA INSERIR:\n"); scanf("%d",&p); item.chave = p; Enfileira(item, &fila); system("cls"); printf("O PROCESSO %d FOI INSERIDO COM SUCESSO !!!\n\n", item.chave); printf("DIGITE A SUA OPCAO\n(1)INSERIR UM PROCESSO\n(2)RETIRAR UM PROCESSO\n(3)IMPRIMIR A FILA DE PROCESSO NA ESPERA\n(4)TAMANHO DA FILA\n(5)SAIR\n\n"); scanf("%d",&op); i++; break; case 2: system("cls"); if(Vazia(fila)){ Desenfileira(&fila, &item); printf("DIGITE A SUA OPCAO\n(1)INSERIR UM PROCESSO\n(2)RETIRAR UM PROCESSO\n(3)IMPRIMIR A FILA DE PROCESSO NA ESPERA\n(4)TAMANHO DA FILA\n(5)SAIR\n\n"); scanf("%d",&op); } else{ Desenfileira(&fila, &item); printf("O PROCESSO: %d JA FOI RETIRADO DA FILA.\n\n", item.chave); printf("DIGITE A SUA OPCAO\n(1)INSERIR UM PROCESSO\n(2)RETIRAR UM PROCESSO\n(3)IMPRIMIR A FILA DE PROCESSO NA ESPERA\n(4)TAMANHO DA FILA\n(5)SAIR\n\n"); scanf("%d",&op); } break; case 3: if(Vazia(fila)){ system("cls"); printf("ERRO!!!NAO EXISTEM PROCESSOS NA FILA\n"); printf("DIGITE A SUA OPCAO\n(1)INSERIR UM PROCESSO\n(2)RETIRAR UM PROCESSO\n(3)IMPRIMIR A FILA DE PROCESSO NA ESPERA\n(4)TAMANHO DA FILA\n(5)SAIR\n\n"); scanf("%d",&op); } else{ system("cls"); Imprime(fila); printf("DIGITE A SUA OPCAO\n(1)INSERIR UM PROCESSO\n(2)RETIRAR UM PROCESSO\n(3)IMPRIMIR A FILA DE PROCESSO NA ESPERA\n(4)TAMANHO DA FILA\n(5)SAIR\n\n"); scanf("%d",&op); } break; case 4: system("cls"); cout<<"Tamanho da Fila\n"<NULL");
return 0;
}


TESTADO E FUNCIONANDO...

Nenhum comentário:

Postar um comentário