写 get 顺便数出走了几步

补全 get_steps:返回走到第 k 个节点要走几步(第 0 个算 0 步)。补全后输出取第 3 个(k=2)走了几步。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

头插之后这条链有多长

链表头插不用挪动任何已有节点。补全 push_front,在最前面插入「北辰」。补全后输出整条链现在有几个人。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

双向链表的节点多了什么

第 1 步:单链表:只能往右走 第 2 步:每节再加 prev 指回前一节 第 3 步:从 tail 出发 第 4 步:cur = cur->prev,往回走 第 5 步:再往回一步 3 7 5 9 ∅ tail cur 双向链表的每

开始练习 →

双向链表好在哪

有了 prev 之后,最实在的好处是【0】。

开始练习 →

双向链表的代价是什么

加上 prev 要付的代价是【0】。

开始练习 →

从最后一个往回走一步是谁

运行下面这段程序: #include <iostream> #include <string> #include <utility> #include <vector> using names

开始练习 →

把 prev 接上再从尾巴走回头

补全 link:给已经接好 next 的链补上 prev。补全后从最后一个一路往回走,输出走到头时那个人的名字。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

从尾巴往前数一遍

补全 count_back:从 tail 出发倒着走完整条链,返回数到几个。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

双向插入两个方向都接对

补全 insert_after:把新节点插到 cur 后面,四条指向全部接好。把「北辰」插到「阿岚」后面之后,输出北辰前面那个人的名字。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

双向删除不用再记前一个

补全 unlink:把节点 nd 从双向链上摘掉。因为有 prev,不需要从头遍历找前一个。摘掉「小满」之后,从最后一个往回走两步,输出走到的那个人的名字——prev 那条没接对就走不到。 (本题用 g++ -std=c++17 -O0 编

开始练习 →