Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viciado

[Resolvido] Pilha em C++

Recommended Posts

Depois de estudar um pouco C++, resolvi fazer o tipo PILHA. Está funcinando, mais tem algo em que eu possa melhorar utilizando C++ ?

 

#include <iostream>
#include <new>
using namespace std;

typedef struct nodo{
        int n;
        struct nodo *prox;
        }PILHA;
        
void push(PILHA **P, int n){
     PILHA *aux;
     aux = new PILHA;
     aux->n = n;
     aux->prox = *P;
     *P = aux;    
}

int top(PILHA **P){
    int v;
    if(*P==NULL){
                 cout << "Erro pilha vazia \n";
                 return 0;
                 }
    else{
          v = (*P)->n;
          return v;
          }  
}

void pop(PILHA **P){
     PILHA *aux;
     if(*P!=NULL){
                  aux = *P;
                  *P = (*P)->prox;
                  delete aux;
                  }
     else{
         cout << "Pilha vazia" << endl;
         }
}

int top_pop(PILHA **P){
    PILHA *aux;
    int v;
    if(*P!=NULL){
                 v = (*P)->n;
                 aux = *P;
                 *P = (*P)->prox;
                 delete aux;
                 return v;
                 } 
    else{
         cout << "Pilha vazia \n";
         return 0;
         }
}

int main(){
    PILHA *p;
    cout << "Inserir na pilha 10 \n";
    push(&p,10);
    cout << "Inserir 7 \n";
    push(&p,7);
    cout << "Inserir 8\n";
    push(&p,8);
    cout << "Retirar \n";
    pop(&p);
    cout << "Topo:" << top(&p) << endl;
    cout << "Retira e Topo: " << top_pop(&p) << endl;
    cout << "Agora topo: " << top(&p) << endl;
    system("PAUSE");
    return 0;   
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Orientar a Objetos

 

utilizando classes e polimorfismo ? Nessa parte ainda não cheguei, até hoje não sei bem o que é orientado a objetos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criar uma classe "pilha" é relativamente simples.

Não é preciso um grande planejamento tal como vemos em sistemas completos.

A sua classe não vai interagir com nada.

 

É algo do tipo:

class Pilha
{
    public:
        Pilha(); //construtor
        ~Pilha(); //destrutor

        int Top();
        void Pop();
        void Push(int item);
    private:
        struct ItemPilha
        {
             int valor;
             struct ItemPilha *proximo;
        };

        struct ItemPilha *raiz;
};

Dessa forma você pode usar ela como:

Pilha teste;
 
    teste.Push(10);
    teste.Push(8);
    teste.Top(); //retorna 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criar uma classe "pilha" é relativamente simples.

Não é preciso um grande planejamento tal como vemos em sistemas completos.

A sua classe não vai interagir com nada.

 

É algo do tipo:

class Pilha
{
    public:
        Pilha(); //construtor
        ~Pilha(); //destrutor

        int Top();
        void Pop();
        void Push(int item);
    private:
        struct ItemPilha
        {
             int valor;
             struct ItemPilha *proximo;
        };

        struct ItemPilha *raiz;
};

Dessa forma você pode usar ela como:

Pilha teste;
 
    teste.Push(10);
    teste.Push(8);
    teste.Top(); //retorna 8

Obrigado. Ainda nãe estudei classes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, estou aprendendo pilha esse semestre, estamos começando a entnder, estudar mais a fundo...

Esse foi o primeiro programa q fizemos utilizando pilha!

Só q utilizamos uma biblioteca chamada pilha.h

 

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <pilha.h>

using namespace std;

int main()
{
    int num, x;
    int a;
    struct Pilha(P);
    struct Pilha(P1);
    IniPilha (&P);
    IniPilha (&P1);
    
    cout<<"\n\tDigite valor ou 999 para sair\t\n";
    cin>>num;
    
    while(num!=999 && !pilhacheia(&P)) //Enquanto numero diferente de 999 e pilha vazia (nao cheia)
    {
                   Push(&P, num); //Push : inserir os valores digitados na pilha
                   cout<<"\n\tDigite valor ou 999 para sair\t\n";
                   cin>>num;
    }
    
    while(!pilhavazia(&P)) // enquanto pilha nao vazia (cheia)
    {
        a = Pop(&P); //desempilhar pilha P na variavel "a"
        
        if(!pilhacheia (&P1)) //se pilha estiva vazia (P1)
        {
                       Push(&P1,a); //inserir a variavel a, q esta com a pilha P, na P1.
        }
    }
    
    while(!pilhavazia(&P1)) //Enquanto pilha P1 estiver cheia
    {
                           cout<<Pop(&P1)<<" "; //mostrar P1 
    }   
                   
                          
                          
                          
                          
                          
    system("PAUSE");
    return EXIT_SUCCESS;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.