目录
- 题目描述:
- 示例 1:
- 示例 2:
- 代码实现:
题目描述:
给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
代码实现:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = new ListNode();// 遍历节点
cur = head;// 指向头节点
ListNode pre = null;// 反转之后的尾节点
ListNode tmp = new ListNode();// 临时节点:存储当前遍历的后继
while (cur != null) {
tmp = cur.next;// 记录当前的后继
cur.next = pre;// 当前指向前驱
pre = cur;// 前驱指针指向当前
cur = tmp;// 当前指向临时节点
}
return pre;// 返回最后遍历的节点:即反转之后的头节点
}
}