1. 程式人生 > >反轉鏈表 II

反轉鏈表 II

nbsp tno 反轉 代碼 完成 bsp ext 定義 stat

反轉從位置 mn 的鏈表。請使用一趟掃描完成反轉。

說明:
1 ≤ mn ≤ 鏈表長度。

示例:

輸入: 1->2->3->4->5->NULL, m = 2, n = 4
輸出: 1->4->3->2->5->NULL

解題思路:


將第m個節點之後的(n-m)個節點依次插入第m個節點之前。

如示例中

將節點3插入1 、2中,1->3->2->4->5->NULL

將節點4插入1 、3中,1->4->3->2->5->NULL

定義兩個指針p,q分別指向節點1與節點2,將q後面的節點插入p後面。

代碼如下:

    public static ListNode test(ListNode head, int m, int n) {

        if (m == n) return head;

        ListNode h = new ListNode(0);
        h.next = head;
        ListNode p = h;
        for (int i=1; i<m; i++) p = p.next;
        ListNode q = p.next;

        ListNode temp;
        
for (int i=m; i<n; i++) { temp = q.next; q.next = temp.next; temp.next = p.next; p.next = temp; } return h.next; }

反轉鏈表 II