闭卷重建单链表节点与头指针的ADT、表示不变量、操作与复杂度。
数据结构与抽象数据类型 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建插入删除的指针顺序的ADT、表示不变量、操作与复杂度。
闭卷重建尾指针与O(1)追加的ADT、表示不变量、操作与复杂度。
闭卷重建双向链表与哨兵的ADT、表示不变量、操作与复杂度。
闭卷重建循环链表与终止条件的ADT、表示不变量、操作与复杂度。
闭卷重建迭代器、失效与修改检测的ADT、表示不变量、操作与复杂度。
闭卷重建实验:带哨兵双链表的ADT、表示不变量、操作与复杂度。
机制:插入先保存后继再接新节点,删除先保存目标/后继再改前驱链接并处理资源;实验:逐行推演在位置0、中间和尾后插入删除;边界:先覆盖next再保存旧后继会丢链;删除不存在位置必须保持原状态。
机制:每个节点保存值和next,头指针代表首节点;访问第i项必须沿链逐步走;实验:画空表、单节点和三节点的地址/next关系并实现头插;边界:把局部变量改成新节点不等于更新调用者头指针,断链还会丢失后缀。
机制:prev/next支持双向局部删除,首尾哨兵消除大量空指针分支;实验:用两个哨兵实现insertBefore和erase并检查相邻互指;边界:更新四条链接缺一都会产生单向可达但反向断裂,删除哨兵必须禁止。
机制:维护tail可让尾插常数时间,但空表、删尾和单节点删除都要同步更新head/tail;实验:对交替pushBack/popFront序列检查tail是否仍可达;边界:单链表有tail也不能O(1)删尾,因为仍需找前驱。
机制:迭代器保存当前位置,结构修改可能让节点消失;版本号可做fail-fast检测;实验:实现带modCount的链表迭代器并在并发修改后抛稳定错误;边界:fail-fast只帮助发现误用,不提供线程安全;值修改是否失效要按契约。
机制:循环链表尾节点指回头或哨兵,适合轮转,但遍历不能等待空指针;实验:从任意节点执行Josephus轮转并确保恰好访问一圈;边界:把普通链表while(node)直接套循环链会死循环,空结构表示也需单独定义。
机制:实现首尾插入、按节点删除、反向遍历和结构验证器;实验:覆盖空表、单节点、中间删除和重复删除测试;边界:验证器同时检查size、前后互指、哨兵边界与环,不能只比较输出序列。