Код: Выделить всё
#include <iostream>
class TList
{
public:
class TItem;
class TItterator
{
private:
friend class TList;
friend class TItem;
TItem *Pointer;
TItterator (TItem *Pointer)
{
this->Pointer=Pointer;
}
public:
TItterator ()
{
}
TItterator operator ++()
{
if (Pointer!=nullptr)
{
Pointer=Pointer->Next;
}
}
TItem & operator * ()
{
return *Pointer;
}
operator bool ()
{
return (Pointer!=nullptr);
}
};
class TItem
{
friend class TList;
friend class TItterator;
private:
TItem *Next;
public:
int Data;
};
private:
TItem *Start;
TItem *Last;
public:
TList()
{
Start=nullptr;
Last =nullptr;
}
void Add(int Data)
{
TItem *Item;
Item=new TItem;
Item->Data=Data;
Item->Next=nullptr;
if (Last!=nullptr)
{
Last->Next=Item;
}
Last=Item;
if (Start==nullptr)
{
Start=Item;
}
}
TItterator Begin()
{
return TItterator(Start);
}
};
int main()
{
TList List;
TList::TItterator Itterator;
List.Add(2);
List.Add(21);
List.Add(3);
List.Add(4);
List.Add(8);
List.Add(5);
List.Add(1);
for (Itterator=List.Begin(); (bool)Itterator; ++Itterator)
{
std::cout<<(*Itterator).Data<<std::endl;
}
return 0;
}