把 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 编
unique_ptr 链头一释放会怎样
第 1 步:next 都是 unique_ptr 第 2 步:head.reset():第 1 节释放 第 3 步:它的 next 跟着释放第 2 节 第 4 步:它的 next 跟着释放第 3 节 第 5 步:它的 next 跟着释放第
std::list 是什么结构
标准库里的 std::list,本质上是一条【0】。
std::list 中间插入要先拿什么
要在 std::list 中间某处插入,先要拿到【0】。
reset 以后释放了几个
运行下面这段程序: #include <iostream> #include <memory> #include <string> using namespace std; int freed = 0;
用 std::list 在最前面插
补全:用 std::list 的 push_front 在最前面插入「北辰」,然后输出「长度/第一个」,格式如 5/甲。 (本题用 g++ -std=c++17 -O0 编译。)
用 std::list 插到某人后面
补全:找到「阿岚」,把「北辰」插到她后面,再按顺序输出所有名字,用 - 连起来。 (本题用 g++ -std=c++17 -O0 编译。)