交付增删查扩容一起验收
这是这条路线的最终作品。把完整的 SeatRow(new[] 定长存储 + size + push / grow / get / insert,析构 delete[])写出来,然后一次验完五条:放 4 个人之后 size 是 4;容量从 2
new[] 出来的要怎么还
new int[cap] 开出来的缓冲区,不用了要【0】。
修好扩容时丢的数据
场景:实验机上 ~/work/seq/grow.cpp 是一个手写顺序表:容量从 2 开始,满了就 grow() 翻倍。可数一多,前面的数就变成了乱七八糟的值。 任务:修好 grow():换新缓冲区时要把旧数据按原顺序搬过去,旧的那块还要
修好插入时的覆盖
场景:~/work/seq/ins.cpp 按指令把数插到指定下标。可在中间插一次,后面的数就全变成了同一个。 任务:修好 insert_at() 的搬移方向。make 编译后用 sample.txt 自测;check 会用随机的插入序列(
修好删除后的个数
场景:~/work/seq/era.cpp 按下标删数,可删完以后表里的个数没变,多出一个;有时内存检查还报越界。 任务:修好 erase_at():往前补位的循环别读到 data[size],删完 size 要减一。make 编译后用 s
补写找第一次出现
场景:~/work/seq/find.cpp 读入一张表和若干个要查的数,find_first 还没写。 任务:补全 find_first:返回 x 第一次出现的下标,表里没有就返回 -1。make 编译后用 sample.txt 自测;c
链表里的每一小节叫什么
链表不是一整块,是一小节一小节接起来的。其中的每一小节叫【0】。
一小节里除了数据还存什么
链表的每一小节分成两半:一半存数据,另一半存的是【0】。
最后那一节的 next 是什么
走到最后一节,它的 next 里放的是【0】。
要找到整条链至少抓住谁
第 1 步:一节 = 数据 + next 指针 第 2 步:next 记着下一节在哪 第 3 步:一节一节接成一条链 第 4 步:手里只攥着第一节:head 3 ∅ 7 ∅ 5 9 ∅ head 链表没有下标,想访问它,手里至少得先抓住【0