詳解數據結構鏈表的基本操作
在數據結構中,根據不同的數據組織方式可以分為四類基本邏輯結構(關系):集合結構、線性結構、樹形結構、圖狀結構(網狀結構);根據存儲結構可以分為:順序存儲、離散存儲。
鏈表是以線性結構加上離散存儲組成,或者說是線性表的鏈式存儲,是各個對象按照線性順序排列的數據結構,鏈表元素的線性順序是由對象里面的指針域決定的,所以在鏈式存儲中不僅要存數據元素的信息外,還要存儲它后一個元素的存儲地址來表示來表示每個元素和它之后的下一個元素的邏輯關系。鏈表為元素集合提供了一種簡單靈活的的表示方式,解決了順序表插入和刪除時需要移動大量元素的(下面會講到)。
把n個數據元素用線性表的鏈式存儲這種數據結構,通??梢员硎救鐖D形式

鏈表可以有多種形式。它可以是單鏈接的或雙鏈接的,可以是以排序的或是未排序的,可以是循環的或非循環的


鏈表的操作:
在實現鏈表的通常情況下會給鏈表加上一個哨兵節點,來讓代碼更簡單些,哨兵是一個啞對象,其作用只有簡化邊界條件的處理,哨兵節點位置是在第一個元素結點之前(哨兵結點在插入、刪除元素為第一個元素時可以簡化操作)。我們把指向第一個結點的存儲位置叫做頭指針,第一個結點叫做頭節點(即哨兵結點)。
1、 創建空鏈表

2、 鏈表查找
從鏈表的第一個元素結點起,判斷是否為第i結點,若是則返回該結點的指針,否則查找下一結點,依次類推

3、 鏈表插入
獲取結點ai-1的指針p(ai 之前驅),然后申請一個q結點,并將其插入p指向的結點之后

4、 鏈表刪除
找到結點ai的前驅,將結點ai刪除之


在鏈表的操作中,插入和刪除操作就只是改變了幾個指針的指向,時間復雜度都為O(1),所以越是插入刪除操作越頻繁的數據集合采用鏈表的方式存儲效率越高。
- 贊