鏈表好用不拼弃?

鏈表就先以單向鏈表為例夏伊,簡(jiǎn)單講解下,為何有時(shí)用鏈表吻氧,有時(shí)卻覺(jué)得數(shù)組(列表)溺忧。

首先必須初始化數(shù)組,然后把新節(jié)點(diǎn)的指針指向next盯孙,這個(gè)地方指針容易出錯(cuò)鲁森,須注意下。

初始化節(jié)點(diǎn)cur


cur指向next


prev指向cur

刪除操作振惰,先找上節(jié)點(diǎn)歌溉,將其指針,直接指向next骑晶。這時(shí)痛垛,你會(huì)說(shuō),咦透罢,cur.next指針沒(méi)有清空啊榜晦,emmm,那你也可以清空。指向null羽圃。

delete節(jié)點(diǎn)


雙向列表實(shí)現(xiàn)乾胶,只要給next,加上pre屬性,讓它指向前面cur,就行朽寞。

雙向鏈表


循環(huán)鏈表

循環(huán)列表實(shí)現(xiàn)時(shí)识窿,將頭節(jié)點(diǎn)的next屬性指向其本身,然一次添加元素即可脑融。

現(xiàn)在看看喻频,鏈表的優(yōu)勢(shì)和劣勢(shì)。

鏈表通過(guò)‘指針’將一組零散的內(nèi)存串聯(lián)起來(lái)肘迎,就可以充分利用內(nèi)存甥温;而數(shù)組內(nèi)存需連續(xù)的锻煌,足夠大的空間。

但是呢姻蚓,鏈表也得支持增改刪查宋梧,每次遍歷最優(yōu)時(shí)間復(fù)雜度O(1),最差時(shí)間復(fù)雜度O(n),而數(shù)組只要用下表就可以訪問(wèn)到,時(shí)間復(fù)雜度O(1),如果隨機(jī)查找狰挡,時(shí)間復(fù)雜度則是捂龄,O(n).

在開發(fā)中,一般用雙向列表或者循環(huán)列表加叁,這樣就能大大降低倦沧,所需的時(shí)間復(fù)雜度。其實(shí)仔細(xì)想想它匕,這就是用時(shí)間換空間的思路展融。

簡(jiǎn)單介紹下,CPU緩存:cpu從內(nèi)存中讀取數(shù)據(jù)時(shí)超凳,會(huì)把每次取到的數(shù)據(jù)加載到CPU的緩存中愈污。而CPU每次從內(nèi)存中讀取數(shù)據(jù)并不是只讀取那個(gè)特定要訪問(wèn)的地址,而是讀取一個(gè)數(shù)據(jù)塊轮傍,并保存到CPU緩存中暂雹,然后下次訪問(wèn)內(nèi)存數(shù)據(jù)的時(shí)候就會(huì)從CPU緩存中開始查找,如果沒(méi)找到创夜,就從內(nèi)存中取杭跪。這樣就實(shí)現(xiàn)了比內(nèi)存訪問(wèn)更快的機(jī)制。

對(duì)于數(shù)組而言驰吓,存儲(chǔ)空間是連續(xù)的涧尿,所以在加載某個(gè)下標(biāo)元素時(shí),可以把以后的幾個(gè)下標(biāo)元素在也加載到CPU緩存這樣檬贰,執(zhí)行起來(lái)速度更快(比訪問(wèn)內(nèi)存)姑廉,比存儲(chǔ)空間不連續(xù)的鏈表存儲(chǔ)也快。

如果翁涤,我們能利用緩存鏈表桥言,那么又能降低操作鏈表的時(shí)間復(fù)雜度了。也可采用2-8策略葵礼,用過(guò)的元素放到鏈表最前面号阿,少用的自然就在后面了,這個(gè)實(shí)現(xiàn)鸳粉,可用哈希表來(lái)記錄數(shù)據(jù)的位置扔涧;緩存呢,注意一下,是否達(dá)到上限就行枯夜。

reference:極客時(shí)間 《數(shù)據(jù)結(jié)構(gòu)與算法之美》

? ? ? ? ? ? ? ?《數(shù)據(jù)結(jié)構(gòu)與算法javascript描述》

? ? ? ? ? ? ? ? ?部分源碼:https://github.com/Jiangjao/python_learn_demo/new/master

? ? ? ? ? ? ? ? ?部分圖片來(lái)源:leetcode 鏈表介紹

詳細(xì)細(xì)節(jié)弯汰,有時(shí)間再慢慢添加。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卤档,一起剝皮案震驚了整個(gè)濱河市蝙泼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劝枣,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件织鲸,死亡現(xiàn)場(chǎng)離奇詭異舔腾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)搂擦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門稳诚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人瀑踢,你說(shuō)我怎么就攤上這事扳还。” “怎么了橱夭?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵氨距,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棘劣,道長(zhǎng)俏让,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任茬暇,我火速辦了婚禮首昔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糙俗。我一直安慰自己勒奇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布巧骚。 她就那樣靜靜地躺著赊颠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪网缝。 梳的紋絲不亂的頭發(fā)上巨税,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音粉臊,去河邊找鬼草添。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扼仲,可吹牛的內(nèi)容都是我干的远寸。 我是一名探鬼主播抄淑,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驰后!你這毒婦竟也來(lái)了肆资?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灶芝,失蹤者是張志新(化名)和其女友劉穎郑原,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夜涕,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犯犁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了女器。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酸役。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖驾胆,靈堂內(nèi)的尸體忽然破棺而出涣澡,到底是詐尸還是另有隱情,我是刑警寧澤丧诺,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布入桂,位于F島的核電站,受9級(jí)特大地震影響锅必,放射性物質(zhì)發(fā)生泄漏事格。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一搞隐、第九天 我趴在偏房一處隱蔽的房頂上張望驹愚。 院中可真熱鬧,春花似錦劣纲、人聲如沸逢捺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)劫瞳。三九已至,卻和暖如春绷柒,著一層夾襖步出監(jiān)牢的瞬間志于,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工废睦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伺绽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奈应,于是被迫代替她去往敵國(guó)和親澜掩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 鏈表(上):如何實(shí)現(xiàn)LRU緩存淘汰算法? 今天我們來(lái)聊聊“鏈表(Linked list)”這個(gè)數(shù)據(jù)結(jié)構(gòu)惩妇。學(xué)習(xí)鏈表有...
    GhostintheCode閱讀 1,328評(píng)論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • CPU Cache 今天的CPU比25年前更復(fù)雜株汉。那時(shí)候,CPU內(nèi)核的頻率與內(nèi)存總線的頻率相當(dāng)屿附。內(nèi)存訪問(wèn)只比寄存器...
    blueshadow閱讀 2,992評(píng)論 0 5
  • 班級(jí)情況: 校區(qū):科學(xué)創(chuàng)想樂(lè)高機(jī)器人茂業(yè)校區(qū) 時(shí)間:周日4:00——5:00 學(xué)員:孟宣淇 任教老師:李飛 教學(xué)目...
    A越單純?cè)叫腋?/span>閱讀 1,550評(píng)論 1 1
  • 小浪蕩漾郎逃,輕風(fēng)柳揚(yáng)。一江碧水混碧落挺份,吹來(lái)裊裊桂花香≈福花匝兩岸匀泊,兩岸飄香。忘知料峭薄衾裳朵你,很可能賺了風(fēng)涼各聘。今晚賞月,...
    傲視五洲閱讀 335評(píng)論 3 5