劍指15.反轉連結串列
阿新 • • 發佈:2020-08-09
題目描述
輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。思路
為了反轉一個連結串列,需要調整連結串列中指標的方向。當調整節點 i 的指標指向時,需要知道節點 i 本身,還需要知道 i 的前一個節點 h,因為我們需要把節點 i 的指標指向節點 h 。同時,我們還需要提前儲存 i 原來的下一個節點 j ,以防止連結串列斷開。因此,需要3個指標,分別指向當前遍歷到的節點,它的前一個節點以及後一個節點。程式碼實現
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head == null || head.next == null) return head; ListNode pre = null;//注意要考慮到第一個節點,讓它指向null ListNode next = null; while(head != null){ next = head.next; //先記錄一下當前節點的下一個節點,以防斷開找不到下一個節點head.next = pre; pre = head; head = next; } return pre; } }