Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
falconrock2

Ajuda com exercício sobre pilha/fila

Recommended Posts

Fazer um programa que junte os exemplos de pilha e fila

juntar o programa para nao usar ponteiros

Criar funcao para inverte a pilha e a fila.

#include <iostream>

#include <cstdlib>

#define TAM 200 // tamanho máximo para a área de armazenamento

using namespace std;

struct pilha {

int a[TAM];

int topo;

int tamanho;

};

void iniciaPilha (struct pilha *p){

p->topo = -1;

p->tamanho = TAM - 1;

}

bool pilhaVazia (struct pilha *p){

if (p->topo == -1) return true;

else return false;

}

bool pilhaCheia (struct pilha *p){

if (p->topo == p-> tamanho) return true;

else return false;

}

bool push (struct pilha *p, int n){

if (pilhaCheia(p)){ return false; }

else {

p->topo++;

p->a[p->topo] = n;

return true;

}

}

bool pop (struct pilha *p, int *r){

if (pilhaVazia(p)){ return false; }

else {

*r = p->a[p->topo];

p->topo--;

return true;

}

}

void exibePilha (struct pilha *p){

int n; struct pilha t;

iniciaPilha(&t);

// Inverte a pilha para a pilha temporária t

while (!pilhaVazia(p)){ pop(p,&n); push(&t,n); }

cout << "\n\n";

while (!pilhaVazia(&t)){

pop(&t,&n);

cout << n << " ";

push(p,n);

} // Inverte a pilha temporária t de volta para p exibindo na tela

}

int main(int argc, char* argv[]){

struct pilha p;

int x, op;

iniciaPilha(&p);

do {

cout << "\n1 - Testa vazia";

cout << "\n2 - Testa cheia";

cout << "\n3 - Empilha";

cout << "\n4 - Desempilha";

cout << "\n5 - Exibir pilha";

cout << "\n6 - Sair";

cout << "\nDigite sua opcao: ";

cin >> op;

switch (op){

case 1: if (pilhaVazia(&p)){

cout << "Sim\n\n";

} else {

cout << "Nao\n\n";

}break;

case 2: if (pilhaCheia(&p)){

cout << "Sim\n\n";

} else {

cout << "Nao\n\n";

}break;

case 3: cout << "Digite um numero pra empilhar: ";

cin >> x;

if (push(&p,x)){

cout << "Ok\n\n";

} else {

cout << "Erro\n\n";

}break;

case 4: if (pop(&p,&x)){

cout << "Desempilhado = " << x <<"\n\n";

} else {

cout << "Erro\n\n";

}break;

case 5: exibePilha(&p); break;

case 6: break;

default: cout << "Opcao invalida . . .\n\n";

}

} while (op != 6);

cout << "\n\n";

system("PAUSE");

return 0;

}

#include <iostream>

#include <cstdlib>

#define MAX 200 // tamanho máximo para a área de armazenamento

using namespace std;

struct fila {

int a[MAX];

int ini;

int fim;

int tam;

};

void iniciaFila (struct fila *f){

f->ini = 0;

f->fim = 0;

f->tam = 0;

}

bool filaVazia (struct fila *f){

if (f->tam == 0) return true;

else return false;

}

bool filaCheia (struct fila *f){

if (f->tam == MAX) return true;

else return false;

}

bool enfileira (struct fila *f, int n){

if (filaCheia(f)){ return false; }

else {

f->a[f->fim % MAX] = n;

f->fim++;

f->tam++;

return true;

}

}

bool desinfileira (struct fila *f, int *r){

if (filaVazia(f)){ return false; }

else {

*r = f->a[f->ini % MAX];

f->ini++;

f->tam--;

return true;

}

}

void exibeFila (struct fila *f){

int i,n;

for (i=0; i< f->tam; i++){

desinfileira(f,&n);

cout << n << " ";

enfileira(f,n);

}cout << "\n\n";

}

falconrock2@click21.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×