题目描述:
给你单链表的头节点head,请你反转链表,并返回反转后的链表。
示例描述:
题解实现:
/**
* 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; }
* }
*/
//prev,cur,curNext,三个引用配合完成链表反转,最后返回newHead反转之后的头节点也就返回了反转之后的链表,这种题找五个节点组成链表画一下会更加形象。
class Solution {
public ListNode reverseList(ListNode head) {//这里链表反转定义四个引用
ListNode prev = null;//一开始暂不确定,就先置为空
ListNode newHead = null;//一开始暂不确定,就先置为空
ListNode cur = head;
ListNode curNext;
while(cur != null){
curNext = cur.next;//放在循环里面是因为,如果放在外面,该链表为null的话,cur.next会产生空指针异常
if(curNext == null){
newHead = cur;//到这一步,就将原来的尾节点找到作为反转之后的头节点
}
cur.next = prev;
prev = cur;
cur = curNext;
}
return newHead;
}
}