-
思路
每次遍歷的節(jié)點拿到最前面缕坎,作為新的head節(jié)點碾盐。
head=p.next
那么2節(jié)點的next地址不能丟了备韧。
p.next=head.next
然后考慮2的后面是誰辞居?
head.next=q
如果沒有這個q,head.next=p葫盼。第三個節(jié)點出現(xiàn)的時候残腌,就會把中間的丟了。因為每次新出來的節(jié)點要連接上次出來的點。需要有個引用指向它废累。p指向順序遍歷的尾節(jié)點。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;
}
}