为下一个节点解引用空链表的头部

时间:2019-05-12 08:23:03

标签: c++ singly-linked-list dereference

当我想到这个主意时,我正在尝试用C ++实现链接列表。标准节点定义为

class node {
public:
    int data;
    node *next;
};

我创建了一个空列表node *head;,然后尝试了

if(head->next == nullptr)
    cout<<"Stores nullptr";
if(! head->next)
    cout<<"Returns bool values";

但是没有输出,所以存储在head->next中的内容是什么?

2 个答案:

答案 0 :(得分:0)

首先,您应该为main中的节点类创建一些空间/分配内存。

请注意 node *head;仅是声明,而不是定义。有关更多详细信息,请查看What is the difference between a definition and a declaration?

  1. 您为对象分配空间
  2. 初始化其值,以便更优雅地定义构造函数方法
    node *head = new node;
    head->next = nullptr;
    head->data=0;

我仍将其视为Linked lists in C++的副本

答案 1 :(得分:-1)

如果您声明node *head;,则head是一个未初始化的指针,其中包含一个随机地址。取消引用是未定义行为

您需要a)初始化head:node *head = nullptr;,并b)测试该条件:if (head == nullptr) { head = new node; node->head = nullptr; ...