Cursul 8
O
OClase (continuare)
qinitializarea membru cu membru
qX& X::operator=(const X&)
OClase parametrizate
qstive parametrizate (stivap.h, stivap1.h)
qcozi parametrizate
qliste parametrizate
qprieteni si clase parametrizate
Olista liniara ordonata
#include
#include
template
class NodStiva {
Elt elt;
NodStiva *leg;
public:
friend class Stiva;
}
template
class Stiva {
NodStiva *virf;
public:
Stiva() { virf = NULL; }
~Stiva() { }
void push(Elt&);
void pop();
Elt& top();
};
template
void Stiva::push(Elt& un_e)
{
NodStiva *p = new NodStiva;
assert (p != 0);
p->elt = un_e;
p->leg = virf;
virf = p;
}
template
void Stiva::pop()
{
if (virf) {
NodStiva *p = virf;
virf = p->leg;
delete p;
}
}
template
Elt& Stiva::top()
{
assert(virf != 0);
Elt *pelt = new Elt;
*pelt = virf->elt;
return *pelt;
// return virf->elt;
}
#include
template
class Stiva {
Elt *ptab;
int virf;
public:
Stiva();
~Stiva() { }
void push(Elt&);
void pop();
Elt& top();
};
template
Stiva::Stiva()
{
ptab = new Elt[MAX_STIVA];
virf = -1;
}
template
void Stiva::push(Elt& un_e)
{
assert(virf < MAX_STIVA);
ptab[++virf] = un_e;
}
template
void Stiva::pop()
{
if (virf >= 0)
virf--;
}
template
Elt& Stiva::top()
{
assert (virf >= 0);
Elt *pe = new Elt;
*pe = ptab[virf];
return *pe;
}