/*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();
Pergunta
Iorrana Nascimento
/*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;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.