LeetCode No.206 反轉(zhuǎn)鏈表

一 解析

鏈表內(nèi)包含一個 val 數(shù)值和一個指向后繼節(jié)點(diǎn)的引用 next攻锰。要做的就是把這個鏈表節(jié)點(diǎn)內(nèi)的指針指向它的前驅(qū)節(jié)點(diǎn)娶吞。
因?yàn)檫@是一個單向鏈表械姻,所以光憑借這個鏈表本身的數(shù)據(jù)還無法直接獲取每個節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)。 所以這里我們需要一個額外的變量绣夺,來獲取并保存每個節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)欢揖。
初始化鏈表的頭節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)是 null浸颓。

這個題看起來很簡單,但是很多時候产上,在我一段時間不接觸這個題之后再來做的時候晋涣,還是會出錯。為了把這個題徹徹底底地梳理清楚算吩,還是畫圖來處理的比較好佃扼。

問題的核心,在于幾個指針的移動過程压昼,梳理清楚循環(huán)過程中指針的移動,這個題就理清楚了匠题。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode curr = head;
        ListNode prev = null;
        while (curr != null) {
            ListNode item = curr.next;
            curr.next = prev;
            prev = curr;
            curr = item;
        }
        return prev;
    }
}
  1. 進(jìn)入循環(huán)體前韭山,聲明了一個值為 null 的前驅(qū)節(jié)點(diǎn)冷溃,這個是符合場景的,因?yàn)槌跏兼湵淼念^節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)就是 null续搀。
初始化
  1. 循環(huán)體第一步禁舷,聲明了一個新的指針毅往,保存的是當(dāng)前節(jié)點(diǎn)的后繼節(jié)點(diǎn)引用攀唯。


    step1
  2. 循環(huán)體第二步侯嘀,將當(dāng)前節(jié)點(diǎn)的后繼節(jié)點(diǎn)引用修改為指向前驅(qū)節(jié)點(diǎn)。這里可以看到第一步代碼的作用了吠谢,只有先用指針保留對原來的后繼節(jié)點(diǎn)的引用诗茎,在修改了當(dāng)前節(jié)點(diǎn)的后繼引用指向之后敢订,才能保持對鏈表后半段的控制。沒有這個 item 指針楚午,我們就無法繼續(xù)控制斷開連接引用的兩段鏈表醒叁。
    step2
  3. 第三步把沼,將前驅(qū)節(jié)點(diǎn)指針指向修改為指向當(dāng)前節(jié)點(diǎn)。原來的鏈表頭節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)是 null饮睬,但是頭節(jié)點(diǎn)之后的節(jié)點(diǎn),它們的前驅(qū)節(jié)點(diǎn)就都不是 null 了割去,所以需要在循環(huán)體內(nèi)不斷更新這個前驅(qū)節(jié)點(diǎn)指針的指向昼丑。
    step3
  4. 第四步菩帝,將當(dāng)前節(jié)點(diǎn)指針引用修改為指向循環(huán)體內(nèi)保存的后繼節(jié)點(diǎn)。節(jié)點(diǎn) 1 的引用指向關(guān)系已經(jīng)修改完成了宜雀,下一輪循環(huán)需要處理的是節(jié)點(diǎn) 2握础。
    step4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末简烘,一起剝皮案震驚了整個濱河市孤澎,隨后出現(xiàn)的幾起案子依鸥,更是在濱河造成了極大的恐慌,老刑警劉巖姐扮,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茶敏,死亡現(xiàn)場離奇詭異惊搏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)向拆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門浓恳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碗暗,“玉大人言疗,你說我怎么就攤上這事≡胙伲” “怎么了梗醇?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵叙谨,是天一觀的道長。 經(jīng)常有香客問我涤垫,道長蝠猬,這世上最難降的妖魔是什么统捶? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任喘鸟,我火速辦了婚禮,結(jié)果婚禮上崎淳,老公的妹妹穿的比我還像新娘拣凹。我一直安慰自己,他們只是感情好爬迟,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布祈惶。 她就那樣靜靜地躺著雕旨,像睡著了一般扮匠。 火紅的嫁衣襯著肌膚如雪捧请。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天棒搜,我揣著相機(jī)與錄音疹蛉,去河邊找鬼。 笑死力麸,一個胖子當(dāng)著我的面吹牛可款,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播克蚂,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼闺鲸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了埃叭?” 一聲冷哼從身側(cè)響起摸恍,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤立镶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缭召,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了行嗤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛀骇,到底是詐尸還是另有隱情,我是刑警寧澤暑诸,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布笛洛,位于F島的核電站,受9級特大地震影響狱杰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜簿晓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一谒臼、第九天 我趴在偏房一處隱蔽的房頂上張望蜈缤。 院中可真熱鬧劫樟,春花似錦易阳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春暴氏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沼撕。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工笼沥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诗良,地道東北人舞骆。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓总处,卻偏偏與公主長得像辨泳,于是被迫代替她去往敵國和親试溯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容