Ir para conteúdo
Fórum Script Brasil

Iorrana Nascimento

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por 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;
    }

×
×
  • Criar Novo...