链表经典面试题
一,链表逆置
1. 题目解析
解法1:依次反转每个节点的指向
解法2:利用头插的思想
2. 实现
解法1:
解法2:
二,链表合并
1. 题目解析
思想就是在两个链表中,取小的尾插到新的链表
2. 实现
递归实现:
三,判断链表是否有环
1. 题目解析
这里我们可以用快慢指针来解决:快慢指针
,即慢指针一次走一步,快指针一次走两步,两个指针从链表其实位置开始运行,如果链表带环则一定会在环中相遇,否则快指针率先走到链表的末尾
2. 实现
四,链表相交
1. 题目解析
这里可以想一下,如果两个链表是相交的,那么最后一个节点一定是相等的,那么如何找第一个相交的节点呢?我们先让两个链表从相同的位置开始向后找,也就是让长的那个链表先走,直到达到和短的那个相同的位置,然后同时向后找,直到找到一个相同的节点时,那么这个节点就是第一个相交的位置
2. 实现
五,链表的中间节点
1. 题目解析
利用快慢指针的思想