前言
推出一個新系列,《看圖輕鬆理解資料結構和演算法》,主要使用圖片來描述常見的資料結構和演算法,輕鬆閱讀並理解掌握。本系列包括各種堆、各種佇列、各種列表、各種樹、各種圖、各種排序等等幾十篇的樣子。
單向連結串列
單向連結串列屬於連結串列的一種,也叫單連結串列,單向即是說它的連結方向是單向的,它由若干個節點組成,每個節點都包含下一個節點的指標。
單連結串列特點
- 建立單連結串列時無需指定連結串列的長度,這個比起陣列結構更加有優勢,而陣列縱使實現成動態陣列也是需要指定一個更大的陣列長度,而且要把原來的陣列元素一個個複製到新陣列中。
- 單連結串列中的節點刪除操作很方便,它可以直接改變指標指向來實現刪除操作,而某些場景下陣列的刪除會導致移動剩下的元素。
- 單連結串列中的元素訪問需要通過順序訪問,即要通過遍歷的方式來尋找元素,而陣列則可以使用隨機訪問,這點算是單連結串列的缺點。
單連結串列建立
建立一個空連結串列,
插入鏈尾
將nobody grows old merely by a number of years
這些單詞按順序分別插入尾部,建立“nobody”節點,
連線起來,
繼續建立“grows”節點,
再連線起來,
以此類推,將剩下的分別建立節點並連線起來。
建立迭代器
迭代器的 current 指標初始指向head,
執行兩次 next 操作, current 指標指向索引為2的節點,
此時的節點值為,
設定 current 指標指向索引為4的節點,
插入節點
在索引1後面插入“but”和“someone”兩個節點。先將 current 指標指向索引為1的節點,建立一個"but"新節點,
插入到 current 指向位置,
執行 next 操作,
建立一個"someone"新節點,
插入到 current 指向位置,
刪除節點
將“but”和“someone”兩個節點刪除,先刪除“but”節點,
刪除“someone”節點,
-------------推薦閱讀------------
我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:
歡迎關注: