【发布时间】:2021-06-28 05:32:19
【问题描述】:
我正在学习 C++ 并尝试实现单链表。基本上是一个链表,提供两种简单的方法,插入和显示。下面是代码sn -p --
class LinkedList {
public:
int data;
LinkedList *next;
LinkedList() {
}
LinkedList(int d) {
data = d;
}
void insert(int d) {
LinkedList temp = *this;
cout << "Calling insert "<< temp.data;
while (temp.next != NULL) {
cout << "Inside the while loop"<< temp.data;
temp = *temp.next;
}
temp.next = new LinkedList(d);
}
void display() {
LinkedList temp = *this;
cout << temp.data;
while (&temp != NULL) {
cout << temp.data;
temp = *temp.next;
cout << temp.data;
}
}
};
int main()
{
LinkedList head(1);
head.insert(2);
head.insert(3);
head.insert(4);
head.display();
return 0;
}
但是,此插入方法未按预期工作。即使在多次调用 insert 之后,它也永远不会进入 while 循环,并且永远不会打印“在 while 循环内”。你能指导一下我的插入方法有什么问题吗?
【问题讨论】:
-
LinkedList temp = *this;制作一个副本,然后您修改该副本。 -
但是,此插入方法未按预期工作 -- 您未能在两个构造函数中初始化 所有 成员变量,并且这只是众多问题之一。
int main() { LinkedList x; x.insert(10); }-- 您不需要任何其他代码来查看问题。 -
LinkedList temp = *this;创建this的本地副本。因此,temp.next = new LinkedList(d);将新节点附加到本地副本,并在您离开insert()后立即丢失。
标签: c++ data-structures singly-linked-list