题目:给你单链表的头节点head,请你反转链表,并返回反转后的链表。
输入:head=[1,2,3,4,5]
输出:[5,4,3,2,1]
public ListNode reverseList() {
if (head == null) {
return head;
}
ListNode cur = head.next;
head.next = null;
while (cur != null) {
ListNode curN = cur.next;
cur.next = head;
head = cur;
cur = curN;
}
return head;
理解:
以三个元素的链表举例,将头结点的下个节点设为cur,cur的下个节点设为curN。先将头节点的下一个置为null, cur的下一个指向head,头节点向前移动一个位置,一直保持在在链表的最前面,然后cur在想下一个节点进行相同的操作,直到cur=null,结束循环。图示如下: