【算法|双指针|链表】反转链表

Leetcode206

反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

【算法|双指针|链表】反转链表_第1张图片

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

【算法|双指针|链表】反转链表_第2张图片

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

双指针法

【算法|双指针|链表】反转链表_第3张图片

思路如上图

Java版

class Solution {
    public ListNode reverseList(ListNode head) {
      ListNode pre = null;
      ListNode cur = head;
      while(cur != null){
        ListNode tmp = cur.next;
        cur.next = pre;
        pre = cur;
        cur = tmp;
      }
      return pre;
    }
}

C++版

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
      ListNode* pre = nullptr;
      ListNode* cur = head;
      while(cur != nullptr){
        ListNode* tmp = cur->next;
        cur->next = pre;
        pre = cur;
        cur = tmp;
      }
      return pre;
    }
};

你可能感兴趣的:(Code,Philosophy,算法,链表,数据结构)