多选:空线性表可执行哪些操作?A 位序1插入 B 位序1删除 C 判空 D 取第1个元素
考研计算机 408 全程课 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
计算:初始容量2、二倍扩容,连续尾插5个元素,发生几次扩容、总共搬移几个旧元素?
计算:长度8的顺序表在位序3插入,再删除新表的位序6。两步各移动几个元素?
多选:A 顺序表按位访问O(1) B 无序表按值查找必为O(log n) C 中间插入最坏O(n) D 扩容后首地址必不变
编程:有序数组原地去重,输入 1 1 2 2 2 5,应返回什么新长度与有效前缀?并说明复杂度。
单选:带头结点的普通单链表为空条件是?A head==NULL B head->next==NULL C head->next==head D head->data==0
编程:写出在单链表结点p后插入新结点s的两条关键指针语句,并解释顺序。
多选:双链表在p后插入s,必须建立哪些关系?A s.prev=p B s.next=原后继 C 原后继.prev=s(若存在) D p.next=s
单选:带头结点循环单链表从首元素遍历,正确终止条件通常是?A p==NULL B p==head C p->next==NULL D p->data==0
计算:静态链表数据链2->7->4,空闲链0->1->3,从7后插入新值后两条链如何变化?
2次扩容;分别搬移2和4个旧元素,共6个。最终容量为8。
A、C。空表允许在位序1插入,也可判空;删除和取第1个元素均越界。
A、C。B缺少有序等条件;D错误,重新分配可能改变基址。
插入移动 8-3+1=6 个;插入后长度9,删除移动 9-6=3 个。
B。头结点已存在,首数据结点不存在时 head->next 为 NULL。
新长度3,有效前缀[1,2,5];双指针单遍扫描,时间O(n)、额外空间O(1)。
A、B、C、D。四条共同维持前后链接一致;尾插时C因无原后继而跳过。
先 s->next=p->next,再 p->next=s。先保存原后继,避免断链或让s形成自环。
取空闲首0:数据链变2->7->0->4,空闲链变1->3;同时给0的数据域赋新值。
B。链中通常无NULL,走回头结点表示一圈结束。
场景题:已知光标结点,附近频繁插删、很少按序号访问,顺序表和双链表优先选谁?为什么?
多选:仅给非空循环单链表尾指针rear,哪些通常可O(1)?A 访问首结点 B 尾插 C 求第i个元素 D 按值查找
编程:逆置 1->2->3 时,第一轮循环后 prev、cur 与链分别是什么?
单选:长度 n 的线性表,在哪些位序可以插入新元素?A 0..n-1 B 1..n C 1..n+1 D 0..n
A、B。首结点由rear->next得到,尾插只改常数条边;C、D通常需遍历。
优先双链表。已知局部结点时前后插删可常数改链;顺序表中间插删需移动后续元素。
C。插入可发生在原首元素前或原尾元素后,所以合法位序为 1 到 n+1。
prev指向1,cur指向2,已逆置前缀为1->NULL,未处理后缀仍为2->3->NULL。