题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
链接:https://leetcode-cn.com/problems/reverse-linked-list
解题思路
我们可以申请两个指针:
- 第一个指针叫 pre,最初是指向 null 的。
- 第二个指针 cur 指向 head,然后不断遍历 cur。
每次迭代到 cur,都将 cur 的 next 指向 pre,然后 pre 和 cur 前进一位。
都迭代完了(cur 变成 null 了),pre 就是最后一个节点了。
动画演示如下:
代码实现
# py3
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
leftNode = None;
midNode = head;
while midNode :
rightNode = midNode.next
midNode.next = leftNode
leftNode = midNode
midNode = rightNode
return leftNode
class Solution {
public ListNode reverseList(ListNode head) {
ListNode leftNode = null;
ListNode midNode = head;
while(midNode != null) {
ListNode rightNode = midNode.next;
midNode.next = leftNode;
leftNode = midNode;
midNode = rightNode;
}
return leftNode;
}
}
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* leftNode = NULL;
ListNode* midNode = head;
while(midNode != NULL) {
ListNode * rightNode = midNode->next;
midNode->next = leftNode;
leftNode = midNode;
midNode = rightNode;
}
return leftNode;
}
};