核心考点:链表操作,思维缜密程度
输入一个链表,反转链表后,输出新链表的表头。
解析一:(三指针法)
利用三个指针进行链表的反转:
- left,mid,right依次指向第一个结点,第二个结点和第三个结点。
- 让mid指向的结点指向left。
- left,mid,right统一向右移动。
- 反复指向步骤2和步骤3,直到right指向链表表尾,即nullptr。
- 再让mid指向的结点指向left。
- 最后让第一个结点指向空,即nullptr。
注意: 当链表为空或链表当中只有一个结点时,链表无需反转。
动图演示:

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if (pHead

最低0.47元/天 解锁文章
260

被折叠的 条评论
为什么被折叠?



