劍指offer-15:反轉連結串列
阿新 • • 發佈:2018-12-11
題目描述
輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。
程式碼
public class Solution15 {
public ListNode ReverseList(ListNode head) {
if(head==null)
return null;
ListNode pre = null;
ListNode next;
while(head!=null){
//先用next儲存head的下一個節點的資訊,保證單鏈表不會因為失去head節點的原next節點而就此斷裂
next = head.next;
//讓head從指向next變成指向pre
head.next = pre;
//更新pre
pre = head;
//把next當成新head,繼續迴圈
head = next;
}
return pre;
}
public static void main(String[] args) {
ListNode node1=new ListNode (3);
ListNode node2=new ListNode(13);
ListNode node3=new ListNode(21);
ListNode node4=new ListNode(33);
ListNode node5=new ListNode(23);
ListNode node6=new ListNode(42);
ListNode node7=new ListNode(28);
ListNode node8=new ListNode(19);
node1. next=node2;
node2.next=node3;
node3.next=node4;
node4.next=node5;
node5.next=node6;
node6.next=node7;
node7.next=node8;
ListNode node=new Solution15().ReverseList(node1);
while (node!=null){
System.out.println( node.val);
node=node.next;
}
}
}