第三步接上删除
加上 remove,删头和删中间都要对,删掉的节点要 delete。删掉「阿岚」(正好是头)之后,输出还剩几个人。 (本题用 g++ -std=c++17 -O0 编译。)
第四步接上反转
加上 reverse,把整条链原地掉头。反转之后输出第一个人的名字。 (本题用 g++ -std=c++17 -O0 编译。)
交付增删查反转一起验收
这是这条路线的最终作品。把完整的 LinkList(append / size / find / remove / reverse,外加析构时释放全部节点)写出来,然后一次验完五条:放 4 个人之后 size() 是 4;find(&quo
加上内存检查以后会抓什么
第 1 步:栈上有个指针 p,还没指东西 第 2 步:new 出一块,p 指着它 第 3 步:delete 以后这块还给系统 第 4 步:p 还指着那里:悬垂指针 第 5 步:用完把 p 置成 nullptr 第 6 步:q 又 new 了
修好反转时弄丢的节点
场景:实验机上 ~/work/list/rev.cpp 读入一串整数建成链表,反转后输出。可它反转完只剩一个数,后面的全丢了。 任务:修好 reverse 里指针改向的顺序,让它输出完整的反转结果(一行,数之间用一个空格隔开)。用 make
删掉的节点要还回去
场景:~/work/list/drop.cpp 读入一串整数和一个要删的值 x,把所有等于 x 的节点删掉后输出剩下的。输出是对的,可 Makefile 带了内存检查(AddressSanitizer),程序一结束就报内存泄漏。 任务:修好
删完了还去碰它
场景:~/work/list/dedup.cpp 把相邻的重复值只留一个,比如 1 1 2 2 2 3 变成 1 2 3。有时输出正常,有时崩溃;带着 AddressSanitizer 一跑,报 heap-use-after-free。 任
补写插到第 k 个后面
场景:~/work/list/ops.cpp 按指令操作一条链:front v 把 v 插到最前面,after k v 把 v 插到第 k 个节点(从 0 数)后面,最后输出整条链。insert_after 还没写。 任务:补全 inser
这种进出规则叫什么
第 1 步:只有右边这一头能进出 第 2 步:压入 3 第 3 步:压入 7 第 4 步:压入 5 第 5 步:要取只能先取最右边的 第 6 步:弹出一个,露出下面那个 第 7 步:弹出一个,露出下面那个 3 top 7 5 一个只有一头能
往栈里放一个叫什么
把一个元素放进栈里,这个动作叫【0】。