题目
中国大学MOOC: 当精灵数量可变时,实现按键停止这些精灵运动,再按键恢复这些精灵运动,从内存占用角度,应该将这些精灵放置于数组而不是链表进行管理。
中国大学MOOC: 当精灵数量可变时,实现按键停止这些精灵运动,再按键恢复这些精灵运动,从内存占用角度,应该将这些精灵放置于数组而不是链表进行管理。
题目解答
答案
错
解析
考查要点:本题主要考查数据结构(数组与链表)的选择合理性,结合动态管理需求与内存占用的权衡。
核心思路:
当元素数量可变时,需频繁进行插入/删除操作,此时链表的效率高于数组。数组在增删时需要移动元素,时间复杂度高;而链表通过修改指针实现增删,时间复杂度更低。题目中“按键停止/恢复精灵”隐含了动态管理需求,链表更合适。虽然链表因指针开销内存占用略高,但题目强调“内存占用角度”,实际链表的动态分配更灵活,且现代内存管理中时间效率优先于空间效率的情况更普遍,因此原题说法错误。
关键对比:数组 vs 链表
-
数组
- 优点:随机访问快(O(1)),内存连续,缓存友好。
- 缺点:插入/删除需移动元素(O(n)),动态扩展困难(需重新分配内存)。
-
链表
- 优点:插入/删除快(O(1) 时间,假设已找到位置),动态增删无需预分配内存。
- 缺点:随机访问慢(需遍历),内存碎片可能增加,指针开销略高。
题目场景分析
- 精灵数量可变:需动态增删精灵,链表的增删效率优势明显。
- 按键操作频繁修改状态:仅需修改精灵属性,对访问效率要求不高,链表遍历成本可接受。
- 内存占用:链表的指针开销虽略高于数组,但动态分配更灵活,且现代应用中时间效率通常优先于空间效率。题目中“内存占用角度”表述存在误导,实际链表更优。