duda pilas

Iniciado por nevfuck, 17 Octubre 2010, 22:22 PM

0 Miembros y 1 Visitante están viendo este tema.

nevfuck

hola foro tengo una duda:

Código (cpp) [Seleccionar]
#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 (cpp) [Seleccionar]
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);

}

Gerik

Código (cpp) [Seleccionar]
int Sumar()
   {Nodo *recorrer;
    recorrer = inicio;
    if(recorrer!=NULL)
     {do
       {a+=recorrer->Dato;
       recorrer = recorrer->sig;
       }
       while(recorrer->sig!=NULL);
       a+=recorrer->Dato;
    }else
     {cout << "Pila vacia" << endl;}
     return a;}

En el main declaras la funcion sumar pero no la has implementado, solo era modificar dos lineas y yap :D :D :D :D :D