Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include "iostream" using namespace std; const int MAX = 6; struct fila{ int fim; int memo[MAX]; }; void enfileirar(fila &f, int x){ f.fim++; f.memo[f.fim] = x; } int desenfileirar(fila &f){ int aux; aux = f.memo[0]; for(int i=0;i<f.fim;i++){ f.memo[i] = f.memo[i+1]; } f.fim--; return aux; } void preferencial (fila &F, int x){ for(int i=F.fim;i>=0;i--){ F.memo[i+1]=F.memo[i]; } F.memo[0] = x; F.fim++; } void furaFila(fila &F, int x, int pos){ for(int i=F.fim;i>=pos;i--){ F.memo[i+1]=F.memo[i]; } F.memo[pos] = x; F.fim++; } void retirarFuraFila(fila &f, int pos){ int aux = f.memo[pos]; for(int i=pos;i<=f.fim;i++){ f.memo[i] = f.memo[i+1]; } f.memo[f.fim]=aux; } void listar(fila F){ cout<<"Valores da fila: \n"; for(int i=0;i<=F.fim;i++){ cout<<F.memo[i]<<endl; } } int cheia(fila f){ //MAX É O TAMANHO DO CAMPO MEMO. SE QUERO SE ESTÁ CHEIA REMOVO UM DE MAX return(f.fim==MAX-1); } int vazia (fila f){ return(f.fim==-1); } int busca(fila F, int x){ for(int i=0;i<=F.fim;i++){ if(x==F.memo[i]){ return i; } } return -1; } int menu(){ int opc; cout<<"\n 1-enfileirar"; cout<<"\n 2-desenfileirar"; cout<<"\n 3-final da fila"; cout<<"\n 4-listar"; cout<<"\n 5-Preferencial"; cout<<"\n 6-FuraFila"; cout<<"\n 7-Retirar FuraFila"; cout<<"\n 6-sair"; cout<<"\n opc-> "; cin>>opc; return opc; } int main(){ fila F; F.fim = -1; int x, opc, pos; do{ opc = menu(); switch (opc){ case 1: //PUSH if(cheia(F)==1){ cout<<"\nFila cheia!"; } else{ cout<<"\nValor: "; cin>>x; if(busca(F, x)==0){ enfileirar(F,x); } else{ cout<<"\nImpossivel adicionar numero repetido"; } } break; case 2: //POP if(vazia(F)==1){ cout<<"Fila Vazia!"; } else{ cout<<"Valor removido = "<<desenfileirar(F); } break; case 3: //TOP if(vazia(F)==1){ cout<<"Fila Vazia!"; } else{ cout<<"valor no final da fila: "<<F.memo[F.fim]; } break; case 4: //LISTAR if(vazia(F)==1){ cout<<"Fila Vazia!"; } else{ listar(F); } break; case 5://Preferencial if(cheia(F)){ cout<<"Fila Cheia"; }else{ cout<<"Valor = "; cin>>x; if(busca(F,x)==0){ preferencial(F,x); } else{ cout<<"\nimpossivel inserir numero repetido"; } } break; case 6://FuraFila if(cheia(F)){ cout<<"Fila Cheia"; } else{ cout<<"digite a posicao= "; cin>>pos; if(pos<0 || pos>F.fim){ cout<<"\nposicao invalida"; } else{ cout<<"digite o numero= "; cin>>x; if(busca(F,x)==0){ furaFila(F, x, pos); } else{ cout<<"\nimpossivel inserir numero repetido"; } } } break; case 7://RetirarFuraFila if(vazia(F)){ cout<<"Fila Vazia."; }else{ cout<<"\nQuem furou fila?"; cin>>x; int pos = busca(F,x); if(pos == -1) cout<<"\nNumero nao encontrado."; else retirarFuraFila(F, pos); } case 8: cout<<"\n Saindo"; break; default: cout<<"opçao invalida!"; } } while(opc !=5); }
Compartilhar