写 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 编