小编Tos*_*nAl的帖子

对链接列表的困惑

我阅读了使用c ++ book编写的编程原理和实践中编写的代码.

struct Link {
string value;
Link* prev;
Link* succ;
Link(const string& v, Link* p = nullptr, Link* s = nullptr)
: value{v}, prev{p}, succ{s} { }
};
Run Code Online (Sandbox Code Playgroud)

我喜欢他的教学方法,从一个空壳开始,一路向上(他/他指的是本书的作者).因此,在他第一次尝试建立一个名单(挪威诸神)时,他这样做了:

Link* norse_gods = new Link{"Thor",nullptr,nullptr};
norse_gods = new Link{"Odin",nullptr,norse_gods};
norse_gods–>succ–>prev = norse_gods;
norse_gods = new Link{"Freia",nullptr,norse_gods};
norse_gods–>succ–>prev = norse_gods;
Run Code Online (Sandbox Code Playgroud)

我的困惑在于他必须明确说明这一点:

norse_gods–>succ–>prev = norse_gods;
Run Code Online (Sandbox Code Playgroud)

如第三和第五行所示.

我在想添加项目而没有明确说明每次添加之间的代码行也会起作用.即:

Link* norse_gods = new Link{"Thor",nullptr,nullptr};
norse_gods = new Link{"Odin",nullptr,norse_gods};
norse_gods = new Link{"Freia",nullptr,norse_gods};
Run Code Online (Sandbox Code Playgroud)

我的思维状态是错误的吗?为什么必须将该行(norse_gods–>succ–>prev = norse_gods;)明确添加到代码中

c++ linked-list c++11

2
推荐指数
1
解决办法
104
查看次数

标签 统计

c++ ×1

c++11 ×1

linked-list ×1