我可以到达其添加节点的位置,但是在那之后,该程序将自动关闭。
我在Windows 10上,使用VSCode内部人员。如果有任何问题,请使用G ++作为我的编译器。我试过只是手动设置节点的指针,并且有效。我不知道该方法有什么不同。这个想法是“尾巴是最后一个节点,所以使tail.next成为添加的节点,并将tail设置为等于新节点。”
#include <iostream>
using namespace std;
struct Node{
int data;
struct Node *next;
};
class List{
private:
struct Node *head;
struct Node *tail;
public:
list(){
head->next=tail;
// I tried initializing tail.next to null but that didn't help
tail->next=NULL;
}
void add(int d){
printf("I'm entering the add\n");
struct Node *n=new Node;
printf("Node created\n");
n->data=d;
printf("Data set %d\n", n->data);
// right here is the issue, it seems
tail->next=n;
printf("Node added\n");
tail=n->next;
}
};
int main(){
List l;
l.add(50);
return 0;
}
我希望它能打印50(由于尚未到达代码,我还未尝试过我的显示方法),但是它输出“数据集50”,然后崩溃。编译正常,没有警告。
答案 0 :(得分:0)
主要问题是在构造函数中,其名称应与Class(实际上是在使用STL列表)相同。然后在构造函数中,应将头和尾都初始化为NULL。
我已更正的其他小错误,以下是您的代码。
docker-compose.yml