Witam
Całkowicie nie idzie mi stworzenie konstruktora kopiującego dla stosu.
#ifndef STOS_H_INCLUDED
#define STOS_H_INCLUDED
class Stos
{
private:
struct LIFO
{
int liczba;
LIFO *nastepny;
};
LIFO *wierzcholek;
public:
Stos();
~Stos();
Stos(const Stos &);
int z_wierzchu();
void usun_z_wierzchu();
void poluz_na_stos(int);
bool pusty();
};
#endif // STOS_H_INCLUDED
#include "stos.h"
#include <cstdlib>
#include <iostream>
Stos::Stos()
{
wierzcholek=NULL;
}
void Stos::poluz_na_stos(int liczba1)
{
LIFO *nowy=new LIFO;
nowy->liczba=liczba1;
nowy->nastepny=wierzcholek;
wierzcholek=nowy;
}
void Stos::usun_z_wierzchu()
{
if(wierzcholek)
{
LIFO *pom=wierzcholek;
wierzcholek=wierzcholek->nastepny;
if(wierzcholek)
delete pom;
}
}
int Stos::z_wierzchu()
{
return wierzcholek->liczba;
}
bool Stos::pusty()
{
return (wierzcholek==NULL);
}
Stos::~Stos()
{
delete wierzcholek;
}
Stos::Stos(const Stos &sto)
{
if(sto.wierzcholek==NULL)
wierzcholek=NULL;
else
{
LIFO *nowy=new LIFO;
LIFO *pom=sto.wierzcholek;
nowy->liczba=pom->liczba;
nowy->nastepny=wierzcholek;
wierzcholek=nowy;
}
}
#include <iostream>
#include "stos.h"
int main()
{
char znak;
int wartosc;
int pom=0;
Stos nowa;
std::cout<<"podaj litere\nd)dodaj do stosu\n"
<<"p)usun z stosu\nr)koniec programu\n";
while(std::cin>>znak && znak!='r')
{
switch(znak)
{
case 'd':
std::cout<<"podaj liczbe jaka dodac do stosu\n";
std::cin>>wartosc;
nowa.poluz_na_stos(wartosc);
std::cout<<"wartosc z wierzchu to:: "<<nowa.z_wierzchu()<<std::endl;
break;
case 'p':
if(nowa.pusty()==true)
std::cout<<"pusty\n";
else
nowa.usun_z_wierzchu();
break;
}
}
Stos nowy(nowa);
nowy.poluz_na_stos(111);
std::cout<<nowy.z_wierzchu()<<std::endl;
nowy.usun_z_wierzchu();
std::cout<<nowy.z_wierzchu()<<std::endl;
nowy.usun_z_wierzchu();
std::cout<<nowy.z_wierzchu()<<std::endl;
return 0;
}