Я практиковал один связанный список в c ++ (изучал, как найти начальный узел кругового списка), но нашел использование оператора -> очень запутанным. Я использую Visual Studio 2010 C ++ Express
Это прекрасно работает: head->append(2)->append(3)->append(4)->append(5)
Но это не работает (для создания кругового связанного списка): head->append(2)->append(3)->append(4)->append(5)->append(head->next)
Когда я запускаю этот метод и отлаживаю, кажется, что head->next
неправильно передается в метод.
Но это работает:
Node* tail=head->append(2)->append(3)->append(4)->append(5);
tail->append(head->next);
- Или после того, как я изменил
return c->next
на return head
в двух методах, head->append(2)->append(3)->append(4)->append(5)->append(head->next)
также работает.
Что мне здесь не хватает? Спасибо!
Подробности моего кода следующие:
void main(){
Node* head=new Node(1);
Node* tail=head->append(2)->append(3)->append(4)->append(5)->append(head->next);
cin.get();
}
class Node{
public:
Node* next;
int data;
bool marked;
Node(int d){
data=d;
marked=false;
next=NULL;
}
Node* append(int d){
Node* c=this;
while(c->next!=NULL){
c=c->next;
}
c->next=new Node(d);
return c->next;
}
Node* append(Node* n){
Node* c=this;
while(c->next!=NULL){
c=c->next;
}
c->next=n;
return c->next;
}
};