我正在尝试实现链接列表类。我有一个名为node的结构,它具有数据和node *,还有一个链表类,该链表类具有一个指向链表头节点的指针作为类成员。我为链接列表类编写了一个insert方法,该方法将数据插入第n个位置:
void insert(int x, int n) {
node* iterator = headNode;
node* temp;
temp->data = x;
for (int i = 0; i < n-1; i++)
{
iterator = iterator->next;
}
temp->next = iterator->next;
iterator->next = temp;
}
但是,当我这样做时,头节点类成员被temp覆盖。使用cout我发现该行
temp->data = x;
是覆盖它的行。有人可以解释为什么吗?顺便说一句,我能够通过使用new在堆上声明temp来解决覆盖问题,但是同样,有人可以解释为什么吗?
@@ UnholySheep指出了in注释,我只是声明了一个指针而不创建节点对象,因此发生的是未定义的行为。非常感谢你。