#include<iostream.h>
class CAT
{
public:
CAT(){itsAge=1;}
CAT(int age):itsAge(age){}
~CAT(){};
int GetAge(){return itsAge;}
private:
int itsAge;
};
class Node
{
public:
Node (CAT*);
~Node();
void SetNext(Node*node){itsNext=node;}
Node*GetNext()const{return itsNext;}
CAT*GetCat()const{return itsCat;}
void Insert(Node*);
void Display();
private:
CAT*itsCat;
Node*itsNext;
};
Node::Node(CAT*pCat):
itsCat(pCat),itsNext(0){}
Node::~Node()
{
cout<<"Deleting node...\n";
delete itsCat;
itsCat=0;
delete itsNext;
itsNext=0;
}
void Node::Insert(Node*newNode) //moze li objasnjenje ove funkcije?
{
if(!itsNext) //ovo mi nije jasno?
itsNext=newNode; //i ovo?
else
int NextCatsAge=itsNext->GetCat()->GetAge();
int NewAge=newNode->GetCat()->GetAge();
int ThisNodeAge=itsCat->GetAge(0);
if(NewAge>=ThisNodeAge && NewAge<NextCatsAge) //nije mi jasan ovaj uslov
newNode->SetNext(itsNext);
itsNext=newNode;
}
else
itsNext->Insert(newNode);
}
void Node::Display()
{
if(itsCat->GetCat()>0)
{
cout<<"MyCat is: ";
cout<<itsCat->GetAge()<<"years old\n";
}
if(itsNext)
itsNext->Diplay();
}
int main()
{
Node*pNode=0;
CAT*pCat=new CAT(0) //u knjizi pise da je ovo lazni objekat zasto?
int age;
Node*pHead=new Node(pCat); //zasto se formira ovaj pokazivac na Node?
while(1)
{
cout<<"New cat's age? (0 to quit): ";
cin>>age;
if(!age)
break;
pCat= new CAT(age);
pNode=new Node (pCat);
pHead->Insert(pNode);
}
pHead->Display();
delete pHead;
cout<<"Exiting...\n\n";
return 0;
}
[Ovu poruku je menjao Dragi Tata dana 30.11.2004. u 20:50 GMT+1]