Разыменование заголовка пустого связанного списка для следующего узла - PullRequest
0 голосов
/ 12 мая 2019

Я пытался реализовать связанный список в 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 голосов
/ 12 мая 2019

Прежде всего, вы должны создать некоторое пространство / выделить память для класса узла в main.

Обратите внимание, что node *head; является только декларацией, а не определением. Для получения более подробной информации смотрите В чем разница между определением и объявлением? .

  1. Вы выделяете место для объекта
  2. Инициализируйте его значения, чтобы быть более элегантным, определите метод конструктора
    node *head = new node;
    head->next = nullptr;
    head->data=0;

Я бы по-прежнему считал это дубликатом Связанных списков в C ++

0 голосов
/ 12 мая 2019

Если вы объявляете node *head;, head является неинициализированным указателем, который содержит случайный адрес.Разыменование это Неопределенное поведение ?

Вам необходимо: а) инициализировать голову: node *head = nullptr; и б) проверить это условие: if (head == nullptr) { head = new node; node->head = nullptr; ...

...