Мне нужна помощь в понимании кода с использованием связанных списков в C ++ - PullRequest
0 голосов
/ 08 октября 2019

Это может быть очень тупой вопрос. У меня есть назначение для создания нового узла и добавления значения к нему. Я искал помощь онлайн и наткнулся на этот код:

head = new(struct node);

Я предполагаю, что это способ создания нового узла и присвоения его заголовку, верно? Это просто более простой способ написать это?

node *new_node = new node;
head = new_node;

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

struct не требуется:

head = new node;

- это все, что вам нужно написать. Обычно вы добавляете скобки для большей согласованности с классами с параметрами в их конструкторах:

head = new node();

Это идентично вашему второму примеру создания временного значения с последующим копированием в head. Большинство компиляторов оптимизируют временное значение.

2 голосов
/ 08 октября 2019

Это правильно. head = new(struct node); использует оператор присвоения и защищает вас на одну строку по сравнению с

node *new_node = new node; head = new_node;.

Я не уверен, но я думаю, что современные компиляторы даже оптимизируют оба ввода для одного и того же кода сборки, но вам следует использовать head = new(struct node);, потому что он более читабелен.

...