Jump to content
Fórum Script Brasil

Iorrana Nascimento

Membros
  • Posts

    1
  • Joined

  • Last visited

Everything posted by Iorrana Nascimento

  1. /*olá, gostaria de ajuda pra montar um código de pilha em c++, não sei como acessar o mPtProx (que é privado da classe Noh), nunca mexi com ponteiros, estou com bastante duvidas */ #include <iostream> typedef int Dado; class Noh { friend class Pilha; private: Dado mDado; // poderia ser outro tipo de variavel Noh* mPtProx; }; class Pilha { public: // Constrói pilha vazia. Pilha(); // Destrutor que desaloca memória. ~Pilha(); // Retira e retorna o valor que estiver no mPtTopo da pilha. // Escreve uma mensagem de erro se não for possível desempilhar. Dado Desempilhar(); // retorna o mPtTopo da Pilha // Insere um valor na pilha. void Empilhar(const Dado& d); // Apagar todos os dados da pilha. void LimparTudo(); // Informa quantos valores existem na pilha. unsigned Tamanho() { return mTamanho; } // Retorna o valor que estao no mPtTopo sem desempilhar. Dado Topo() const; // Informa se a pilha esta Vazia. bool Vazia() const; private: Noh* mPtTopo; unsigned mTamanho; }; using namespace std; Pilha::Pilha() { mPtTopo <- NULL; mTamanho=0; //mPtProx = -1 } Pilha::~Pilha() { delete[] mPtTopo; //delete[] mPtProx; } Dado Pilha::Desempilhar() { if(mPtTopo == NULL){ cout << "Pilha esta vazia" << endl; } else{ Noh *aux; //ponteiro auxiliar mPtTopo -> aux; mPtProx -> mPtTopo; //opcional: cout << dado-> aux << " Removido com sucesso" << endl; mTamanho--; delete[] aux; } // return dado; } void Pilha::Empilhar(const Dado &d) { Noh *novo = new Noh; d -> novo; mPtProx-> novo; if(mPtTopo!=NULL){ novo<-mPtTopo; } mPtTopo = novo; } void Pilha::LimparTudo() { } Dado Pilha::Topo() const { if (mPtTopo == NULL){ cout << "Pilha vazia" << endl; } else{ //cout << mDado->mPtTopo << endl; } return mDado->mPtTopo ; } bool Pilha::Vazia() const { if(mPtTopo == NULL){ cout << "Pilha esta vazia" << endl; return 1; } else{ return 0; } } int main() { Pilha pilha; Dado valor; char comando; do { cin >> comando; switch (comando) { case 'i': // inserir cin >> valor; pilha.Empilhar(valor); break; case 'r': // remover cout << pilha.Desempilhar() << endl; break; case 'l': // limpar tudo pilha.LimparTudo(); break; case 't': // consultar tamanho cout << pilha.Tamanho() << endl; break; case 'e': // espiar cout << pilha.Topo() << endl; break; case 'f': // finalizar // checado no do-while break; default: cerr << "comando inválido\n"; } } while (comando != 'f'); // finalizar execusao while (not pilha.Vazia()) { cout << pilha.Desempilhar() << ' '; } cout << endl; return 0; } //ainda falta: int main(){ return 0; }
×
×
  • Create New...