看圖輕鬆理解數據結構與算法系列(單向鏈表)

前言

推出一個新系列,《看圖輕鬆理解數據結構和算法》,主要使用圖片來描述常見的數據結構和算法,輕鬆閱讀並理解掌握。本系列包括各類堆、各類隊列、各類列表、各類樹、各類圖、各類排序等等幾十篇的樣子。mysql

單向鏈表

單向鏈表屬於鏈表的一種,也叫單鏈表,單向便是說它的連接方向是單向的,它由若干個節點組成,每一個節點都包含下一個節點的指針。算法

單鏈表特色

  • 建立單鏈表時無需指定鏈表的長度,這個比起數組結構更加有優點,而數組縱使實現成動態數組也是須要指定一個更大的數組長度,並且要把原來的數組元素一個個複製到新數組中。
  • 單鏈表中的節點刪除操做很方便,它能夠直接改變指針指向來實現刪除操做,而某些場景下數組的刪除會致使移動剩下的元素。
  • 單鏈表中的元素訪問須要經過順序訪問,即要經過遍歷的方式來尋找元素,而數組則可使用隨機訪問,這點算是單鏈表的缺點。

單鏈表建立

建立一個空鏈表,sql

image

插入鏈尾

nobody grows old merely by a number of years這些單詞按順序分別插入尾部,建立「nobody」節點,數組

image

鏈接起來,網絡

image

繼續建立「grows」節點,數據結構

image

再鏈接起來,併發

image

以此類推,將剩下的分別建立節點並鏈接起來。機器學習

image

image

建立迭代器

迭代器的 current 指針初始指向head,數據結構和算法

image

執行兩次 next 操做, current 指針指向索引爲2的節點,學習

image

此時的節點值爲,

image

設置 current 指針指向索引爲4的節點,

image

插入節點

在索引1後面插入「but」和「someone」兩個節點。先將 current 指針指向索引爲1的節點,建立一個"but"新節點,

image

插入到 current 指向位置,

image

執行 next 操做,

image

建立一個"someone"新節點,

image

插入到 current 指向位置,

image

刪除節點

將「but」和「someone」兩個節點刪除,先刪除「but」節點,

image

image

刪除「someone」節點,

image

image

-------------推薦閱讀------------

個人開源項目彙總(機器&深度學習、NLP、網絡IO、AIML、mysql協議、chatbot)

爲何寫《Tomcat內核設計剖析》

個人2017文章彙總——機器學習篇

個人2017文章彙總——Java及中間件

個人2017文章彙總——深度學習篇

個人2017文章彙總——JDK源碼篇

個人2017文章彙總——天然語言處理篇

個人2017文章彙總——Java併發篇


跟我交流,向我提問:

歡迎關注:

相關文章
相關標籤/搜索