题目:
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
解题思路:用双指针加一个临时指针进行反转,创造两个指针分别指向头和尾,临时指针指向头指针指向的位置,然后让头指针指向尾指针所在的位置,尾指针换到头指针所在的位置(不是指向),最后头指针换到临时指针所在的位置。这算是完成一次循环,当头遍历到尾时就完成了链表的反转。以下是代码:
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode pre = null;
while(cur != null){
ListNode tem = cur.next;
cur.next = pre;
pre = cur;
cur = tem;
}
return pre;
}