劍指2 反轉單鏈表

2021-10-04 22:20:19 字數 1140 閱讀 7788

題目描述:

反轉乙個單鏈表(返回的仍然是鍊錶)

樣例:

輸入:1->2->3->4->5->null

輸出:5->4->3->2->1->null

題解:

**方法一:**迭代(雙指標)

設定兩個相鄰指標,乙個在前,乙個在後,進行反轉

反轉完成後,兩個指標同時後移一位繼續反轉

遍歷一遍就可全部反轉完成

**:

public

static listnode reverselist

(listnode head)

return cur;

}

**方法二:**遞迴

鍊錶指標反轉核心:

一直找尋到最底層head=5的時候能得到返回值5->null。

把底層得到的返回值返回給上一層reverselist(4),進行一系列運算後得到該層的返回值5->4->null,

再把改返回值返回給上一層reverselist(3),進行一系列運算得到該層的返回值5->4->3->null,

以此類推,一層層返回,最終得到整個鍊錶的反轉。

**執行過程**:

;//鍊錶指標反轉

head.next.next = head;

//防止陷入死迴圈,設定等於null時能跳出

head.next = null;

return ter;

}

劍指offer Python反轉單鏈表

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。coding utf 8 class listnode def init self,x self.val x self.next none class solution 返回listnode defreverselist self,phead write ...

劍指offer之單鏈表的反轉

問題 輸入乙個鍊錶,將其進行反轉。思路 定義三個指標分別指向當前結點,前乙個結點,後乙個結點,然後依次反轉指標指向。具體 如下 c struct listnode int val listnode next listnode int x val x next nullptr class soluti...

劍指Offer16 單鏈表反轉問題

單鏈表反 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。單鏈表的反轉問題較為簡單,毫無疑問採用指標的方式來進行鍊錶反轉 注意 在調整第i個節點之前,為了保證鍊錶不被斷裂 首先需要定義指標記錄,i的前乙個結點的位置。public class code016 private s...