链接列表实现崩溃

Linked List Implementation is crashing

我正在尝试在 C++ 中实现链表,当我使用 new 运算符创建链表对象(例如 LinkedList *Head = new LinkedList; 等)时,链表工作正常。但是,如果我使用普通的指针对象声明(例如 LinkedList *Head、*node1、*node2、*node3、*node4;),程序就会崩溃。你们谁能解释一下这次崩溃的原因吗?

代码如下:

#include<iostream>
using namespace std;

struct LinkedList {
    int data;
    struct LinkedList* next;
    //Constructor


    // Traversing the Linked List
    void traverseList(struct LinkedList* Head) {
        cout << "The Linked List Elements are: " << endl;
        while (Head != NULL) {
            cout << Head->data << endl;
            Head = Head->next;
        }
    }
};

int main() {
    // LinkedList *Head = new LinkedList;
    // LinkedList *node1 = new LinkedList;
    // LinkedList *node2 = new LinkedList;
    // LinkedList *node3 = new LinkedList;
    // LinkedList *node4 = new LinkedList;

    LinkedList *Head, *node1, *node2, *node3, *node4;

    Head->data = 10;
    Head->next = node1;
    node1->data = 20;
    node1->next = node2;
    node2->data = 30;
    node2->next = node3;
    node3->data = 40;
    node3->next = node4;
    node4->data = 50;
    node4->next = NULL;

    Head->traverseList(Head);

    return 0;
}
LinkedList *Head, *node1, *node2, *node3, *node4;

仅仅在 C++ 中声明一个指针并不意味着它指向任何东西。您需要初始化它们,以便它们指向内存中的有效地址。通常,这将使用 new 或通过静态分配它们,然后在需要将它们传递给需要指针的函数时获取它们的地址。

作为样式说明,当您看到类似以下内容时:

Head->traverseList(Head);

transverseList不需要成为LinkedList的成员函数。它作为一个独立的功能效果更好。