2025-11-20 06:29:25
链表操作主要包括插入删除、查找遍历、反转合并这些基本动作。比如插入要在某个位置加新节点,删除要找到目标节点断开链接,查找需要从头开始逐个对比,遍历就是顺着指针走完所有节点。还有反转整个链表顺序,合并两个有序链表成新链表,拆分链表成两部分,甚至查找是否存在环。这些操作就像搭积木一样,每个节点都带着地址牌,要动哪个就要先找到它的位置。
为什么是这个答案呢?因为链表和数组不同,没有固定存储空间。比如插入删除要遍历找到前驱节点,像删除链表中间的节点,必须先找到前一个节点断开链接,再连接后一个节点,这就像在火车车厢中间换车,得先拆开前后两节车厢再接上。数据结构书里说,单链表只能从头向尾遍历,不能逆向操作,所以反转需要用新链表逐步保存旧链表数据。合并有序链表时,像两个排好序的队伍要合并成一个大队伍,得逐个比较当前节点值决定先放谁,这样时间复杂度是O(n+m)。实际开发中,像LeetCode 203题反转链表,用了三步操作:先保存头节点,然后不断让当前节点指向前一个节点,更新头节点。这些操作对应着不同的时间成本,比如删除操作最差要遍历整个链表,而合并操作如果有序的话能优化到线性时间。
本题链接: