推出一個新系列,《看圖輕鬆理解數據結構和算法》,主要使用圖片來描述常見的數據結構和算法,輕鬆閱讀並理解掌握。本系列包括各類堆、各類隊列、各類列表、各類樹、各類圖、各類排序等等幾十篇的樣子。mysql
雙向鏈表屬於鏈表的一種,也叫雙鏈表雙向便是說它的連接方向是雙向的,它由若干個節點組成,每一個節點都包含下一個節點和上一個節點的指針,因此從雙向鏈表的任意節點開始,都能很方便訪問他的前驅結點和後繼節點。算法
建立一個空鏈表,sql
將the monster is coming
這些單詞按順序分別插入尾部,建立「the」節點,網絡
鏈接起來,數據結構
建立「monster」節點,併發
再鏈接起來,機器學習
以此類推,將剩下的節點所有建立並鏈接起來。數據結構和算法
迭代器的 current 指針初始指向head,學習
執行兩次 next 操做, current 指針指向索引爲2的節點,.net
此時的節點值爲,
設置 current 指針指向索引爲3的節點,
在索引1後面插入「big」節點。先將 current 指針指向索引爲1的節點,建立一個"big"新節點,
插入到 current 指向位置,
將「big」節點刪除,移動當前指針 current 到「but」節點位置,
執行刪除操做,斷掉「big」節點與先後兩節點的 next 和 prev 指針,而後將「the」節點與「monster」節點關聯起來,
前面的雙向鏈表的 head 節點和鏈尾沒有鏈接關係,因此若是要訪問最後一個節點的話須要從頭開始遍歷,直到最後一個節點。在雙向鏈表基礎上改進一下,把 header 節點的 prev 指針指向最後一個節點,而最後一個節點的 next 指針指向 header 節點,因而便構成雙向循環鏈表。
-------------推薦閱讀------------
個人開源項目彙總(機器&深度學習、NLP、網絡IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:
歡迎關注: