Tôi đã thực hành danh sách liên kết đơn trong C++ (thực hành cách tìm nút bắt đầu của danh sách tròn), nhưng thấy việc sử dụng toán tử -> rất khó hiểu. Tôi đang sử dụng Visual Studio 2010 C++ nhanhToán tử -> không hoạt động như mong đợi trong C++
này hoạt động hoàn hảo: head->append(2)->append(3)->append(4)->append(5)
Nhưng điều này không làm việc (để tạo ra một danh sách liên kết hình tròn): head->append(2)->append(3)->append(4)->append(5)->append(head->next)
Khi tôi nhảy vào phương pháp này và debug , có vẻ như head->next
không được truyền chính xác vào phương pháp.
Nhưng công trình này:
Node* tail=head->append(2)->append(3)->append(4)->append(5); tail->append(head->next);
- Hoặc sau khi tôi thay đổi
return c->next
-return head
trong hai phương pháp,head->append(2)->append(3)->append(4)->append(5)->append(head->next)
cũng làm việc.
Tôi thiếu gì ở đây? Cảm ơn bạn!
Chi tiết về mã của tôi là như sau:
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;
}
};
có phải đó là một kỷ lục mới cho gián tiếp chaining – Mysticial
là UB này bởi bất kỳ cơ hội..? –
@Mysticial - I nghĩ rằng tôi đã sử dụng một chuỗi dài hơn trong một dự án một lần, nhưng tôi đã mất dấu nó. –