Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Viator, Вы писали:
V>>>прямо как во всех книгах... я это уже прочитал не раз и не два, а как реализовать односвязный кольцевой список додумаваете сами называется...
V>>я создал вот такой список
V>>как сюда добавить фиктивный элемент?
R>Просто возьми и добавь, прямо при создании списка. Можешь даже создавать его не оператором new, а разместить прямо в объекте списка. И замкни этот узел сам на себя. Это специальный скрытый элемент, список, не содержащий узлов, кроме этого, считается пустым. Элемент следующий сразу за ним — это начало списка. Вставка нового элемент ПЕРЕД этим элементом, будет соответствовать вставке в конец списка, а вставка сразу ПОСЛЕ него — это вставка в начало списка.
Вот так?
struct Node {
int data;
Node* link;
};
Node*dummy;
Node* first;
Node* last;
int size;
public:
linklist( )
{
last=NULL;
dummy=new Node;
dummy->link=dummy;
first=dummy;
size=0; }
void CreateNewList()
{Node* Q;
for (int i=0; i<5; i++)
{
Q=new Node;
Q->data=rand()%230;
dummy->link=Q;
dummy=Q;
size++;
}
last=Q;
last->link=dummy;
}