image.png
-
思路
image.png
每次遍歷的節點拿到最前面,作為新的head節點。
head=p.next
那么2節點的next地址不能丟了。
p.next=head.next
然后考慮2的后面是誰?
head.next=q
如果沒有這個q,head.next=p。第三個節點出現的時候,就會把中間的丟了。因為每次新出來的節點要連接上次出來的點。需要有個引用指向它。p指向順序遍歷的尾節點。head是每次出來的那個點。q用來指向head需要連接到的點
/**
* Definition for ListNode.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int val) {
* this.val = val;
* this.next = null;
* }
* }
*/
public class Solution {
/**
* @param head: The head of linked list.
* @return: The new head of reversed linked list.
*/
public ListNode reverse(ListNode head) {
if(head==null||head.next==null){
return head;
}
ListNode p = head;
ListNode q = head;
while(p.next!= null){
head=p.next;
p.next=head.next;
head.next=q;
q=head;
}
return head;
}
}