Skip to content

2026年 408 数据结构 第 1 题

数据结构2026年选择题2分

题目

当存储空间有足够的空闲空间时,在保持表内元素顺序相对不变的情况下,下列哪些操作会必然导致产生移动次数()。

I. 表头插入一个元素

II. 表头删除一个元素

III. 表尾插入一个元素

IV. 表尾删除一个元素

错因

B

正确识别了"表头插入"要移动,但把"表尾插入"也算上了。把"顺序表插入" 笼统地等同于"要搬动元素",没分清楚位置:表尾插入只是把新元素写到下标 length 处,length 自增,前面的元素一个都不用动。

C

把"删除"无脑地等同于"要移动",把表尾删除也算上了。表尾删除只需 length--,被删的位置后续会被新元素覆盖,逻辑上等同于"扔掉",没有任何元素需要前移

D

判断方向完全反了。可能是把"链表"的特性套到了顺序表上——链表是表头插入/删除 O(1)、要插表尾或修改表尾才麻烦;但顺序表恰好相反,越靠表头代价越大。混淆了两种存储结构。

总解析

核心:顺序表把元素紧密连续存放在数组下标 0…length-1 上。当向第 i 位插入/删除时,必须把 [i, length-1] 这段元素整体后移或前移一格,移动的元素数 = 受影响区间的长度

逐个核对:

  • I 表头插入:插入位置 i = 0,需把 [0, length-1] 全部后移一格 → 移动 length 次。必然移动
  • II 表头删除:删除位置 i = 0,需把 [1, length-1] 全部前移一格 → 移动 length-1 次。必然移动
  • III 表尾插入:插入位置 i = length,新元素直接写到 a[length],length++ → 0 次移动
  • IV 表尾删除:直接 length-- 即可,原 a[length-1] 被"忽略"(下次写入时被覆盖)→ 0 次移动

所以"必然产生移动"的是 I 和 II。

最终答案是 A

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数