我编写了以下代码,仅在 C++ 中创建节点(整数数据)并将其插入到 SLL 中。
#include <stdio.h>
class Node
{
public:
int data;
Node * next;
Node * first;
Node() {}
void insert(int dat)
{
Node * newnode = new Node();
newnode->data=dat;
newnode->next=NULL;
if(first==NULL)
{
first=newnode;
}
else
{
Node *temp=first;
while(temp->next!=NULL)
{ temp=temp->next; }
temp->next=newnode;
}
}
};
int main()
{
Node * a=new Node();
a->insert(12);
return 0;
}
起初,我尝试将 Node 构造函数重写为 Node(int dat),并尝试对我在插入中创建的每个新节点 (data=dat, next=NULL) 进行初始化。将使用 main 中的“dat”值调用 Insert,它会调用重载的 Node 构造函数以将数据初始化为 dat 和 NULL 旁边。这导致我的程序崩溃。
所以我取出了默认和重载的构造函数,并对插入本身的每个新元素进行了初始化。我的程序运行良好。但是,即使添加了默认构造函数(如代码的第 10 行所示),我的程序也会崩溃。谁能告诉我为什么这两种情况都会发生?
谢谢。