栈中元素的插入和删除操作都在栈的顶端进行,所以方便使用单向链表实现。
链表分为单向/双向/循环链表,插入删除O(1),但查找O(n)。注意指针操作的顺序,防止断链。
链表操作要特别注意指针修改的顺序。例如在节点前插入时,先新节点→next = 当前→next,再当前→next = 新节点。顺序颠倒会导致断链。
【考点】单向链表|栈|指针操作
🎯 考纲定位 GESP 六级「数据结构」模块「链表」考点。命题人卡住的是学生“链表类型与操作场景匹配”的直觉——栈只需访问顶端,单向链表头插/头删 O(1) 即可,无需双向指针,所以“方便”成立。
🧠 解题思维 看到“栈”先想到“LIFO 且只操作顶端”。链表若用头插/头删,单次操作只需改头指针和下一个域,时间复杂度 O(1)。而栈恰恰只需要 O(1) 的顶端操作,无需中间访问或遍历,所以单向链表足够。通法:判断数据结构时,先看操作集中在哪(头/尾/中间),再选链表类型(单向/双向)或数组。
🪤 陷阱拆解 错误选项设计:若选 B,多半是混淆了“链表类型”与“操作复杂度”。单向链表虽无尾指针,但栈只操作头,尾指针无用;若用双向链表反而多存一个域,更不“方便”。陷阱在“方便”二字——命题人考的是“操作集中在头”与“单向链表头插删 O(1)"的匹配,而非“链表是否比数组快”。
🔄 反命题思维 若把“栈”换成“队列”,单向链表需维护头尾指针才能 O(1) 尾删;若把“方便”换成“空间效率”,数组更优。刷到“链表 + 特定操作”题,先问:操作集中在哪里?只需改头/尾/中间?再决定链表类型。