Código
#include <iostream.h> #include <windows.h> #include <conio.h> struct Nodo { int Dato; Nodo *sig; }; class Pila { private: Nodo *inicio; public: //constructor Pila() { inicio=NULL; } void Sacar() { Nodo *r, *ant; r = inicio; if(r!=NULL) { do { ant=r; if (r->sig!=NULL) { r = r->sig; } }while(r->sig!=NULL); if(ant == r) { inicio=NULL; } delete r; ant->sig=NULL; } }
-------------------------------------------------------
void suma
para sumar la pila insertada, en este caso tengo insertado
el 7,9,5 el resultado es 21, tengo que recorrer de nuevo la pila (como en el caso void mostrar)
el problema viene cuando tengo que sumar, ya le busque solo y nole encuentro...
--------------------------------------------------------
Código
void Mostrar() { Nodo *recorrer; recorrer = inicio; if (recorrer!=NULL) { do { cout << recorrer->Dato << endl; recorrer = recorrer->sig; }while(recorrer->sig!=NULL); cout << recorrer->Dato << endl; } else { cout << "Pila vacia" << endl; } } void Insertar(int num) { Nodo *nuevo; nuevo = new Nodo; nuevo->Dato=num; nuevo->sig=NULL; if(inicio==NULL) { inicio=nuevo; } else { if (inicio->sig==NULL) { inicio->sig = nuevo; } else { Nodo *aux; aux=inicio; while(aux->sig!=NULL) { aux=aux->sig; } aux->sig=nuevo; } } } }; void main (void) { int op; Pila numeros; do { system("cls"); cout << "<------(((MENU)))----->" << endl; cout << "1.- Insertar pila" << endl; cout << "2.- Sacar numero de la pila" << endl; cout << "3.- Mostrar pila" << endl; cout<<"4.- suma la pila"<<endl; cout << "elige una opcion: "; cin >> op; system("cls"); switch(op) { case 1: cout<<"numeros insertados"<<endl; numeros.Insertar(7); numeros.Insertar(9); numeros.Insertar(5); break; case 2: cout << "Numero eliminado" << endl; numeros.Sacar(); break; case 3: numeros.Mostrar(); break; case 4: numeros.Sumar(); break; default: cout << "Adios!!!"<< endl; } getch(); }while(op>=1 && op<=3); }