我不知道为什么我的添加方法不起作用

时间:2018-12-24 00:38:16

标签: c++ class linked-list

我可以到达其添加节点的位置,但是在那之后,该程序将自动关闭。

我在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”,然后崩溃。编译正常,没有警告。

1 个答案:

答案 0 :(得分:0)

主要问题是在构造函数中,其名称应与Class(实际上是在使用STL列表)相同。然后在构造函数中,应将头和尾都初始化为NULL。

我已更正的其他小错误,以下是您的代码。

docker-compose.yml