Я могу добраться до места добавления узла, но после этого программа просто отключается.
Я на Windows 10, использую инсайдеры VSCode.Использование G ++ в качестве моего компилятора, если это имеет значение.Я попытался просто установить указатели узлов вручную, и это работает.Я не могу понять, что отличается в методе.Идея заключается в том, что «tail - это последний узел, поэтому сделайте 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», а затем вылетает.Компилирует нормально, без предупреждений.