viciado 1 Denunciar post Postado Outubro 3, 2009 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
VictorCacciari 42 Denunciar post Postado Outubro 3, 2009 Orientar a Objetos Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Outubro 4, 2009 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
VictorCacciari 42 Denunciar post Postado Outubro 4, 2009 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
viciado 1 Denunciar post Postado Outubro 4, 2009 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
mih.galvani 0 Denunciar post Postado Outubro 11, 2009 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