1. 程式人生 > 實用技巧 >206. 反轉連結串列

206. 反轉連結串列

https://leetcode-cn.com/problems/reverse-linked-list/

反轉一個單鏈表。

示例:

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
進階:
你可以迭代或遞迴地反轉連結串列。你能否用兩種方法解決這道題?

自己的想法:頭插法,每次找到最後一個節點以及它的前驅,第一個插入頭結點之後,然後一個個插入這個節點之後。

程式碼:

class Solution {
    public ListNode reverseList(ListNode head) {
        
if(head==null || (head.next==null)) { return head; } ListNode HeadReal = new ListNode(-999); ListNode Temp = new ListNode(-999); ListNode Final=new ListNode(-999); ListNode Count=new ListNode(-999); ListNode test=new ListNode(-999);
long lenth=0; HeadReal.next=head; for(Count=HeadReal.next;Count!=null;Count=Count.next) { lenth=lenth+1; } for(Temp=HeadReal.next;Temp.next.next!=null;Temp=Temp.next) { // System.out.println(Temp.val);
} // System.out.println(Temp.val); Final=Temp.next; Final.next=HeadReal.next; HeadReal.next=Final; Temp.next=null; head=Final; HeadReal.next=head; // System.out.println(head.val); // for(int) for(int i=0;i<lenth-2;i++) { for(Temp=HeadReal.next;Temp.next.next!=null;Temp=Temp.next) { // System.out.println(Temp.val); } // System.out.println("Temp.val"); // System.out.println(Temp.val); Final=Temp.next; Final.next=HeadReal.next.next; HeadReal.next.next=Final; Temp.next=null; HeadReal.next=Final; } // System.out.println("HeadReal.next.next"); // System.out.println(HeadReal.next.next.val); // HeadReal.next=Final; // System.out.println("Final.val"); // System.out.println(Final.val); // Temp.next=null; // HeadReal.next.next=test; // System.out.println("head.val"); // System.out.println(head.next.val); // System.out.println(head.val); // System.out.println(head.next.val); // System.out.println(HeadReal.next.val); // HeadReal.next // for(Temp=head;Temp!=null;Temp=Temp.next) // { // System.out.println(Temp.val); // } return head; } }

然後,Leetcode官方解答:

public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode nextTemp = curr.next;
        curr.next = prev;
        prev = curr;
        curr = nextTemp;
    }
    return prev;
}

檢視題解:https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/

這個方法之後可以用再別的翻轉的方式上。