【數據結構】21_線性表的鏈式存儲結構

順序存儲結構線性表的最大問題

插入和刪除須要移動大量的元素!node


鏈式存儲的定義

  • 爲了表示每一個元素與其直接後繼元素之間的邏輯關係;數據元素除了存儲自己的信息外,還要存儲其直接後繼的信息。

image.png

ai 和 ai+1 是線性表中的兩個相鄰數據元素;在物理內存中無相鄰關係。spa

聯繫存儲邏輯結構

  • 基於鏈式存儲結構的線性表中,每一個節點都包含數據域指針域3d

    • 數據域:存儲數據元素自己
    • 指針域:存儲相鄰節點的地址

image.png

專業術語的統一

  • 順序表指針

    • 基於順序存儲結構的線性表
  • 鏈表code

    • 基於鏈式存儲結構的線性表blog

      • 單鏈表:每一個節點只包含直接後繼的地址信息
      • 循環鏈表:單鏈表中的最後一個節點的直接後繼爲第一個節點
      • 雙線鏈表:單鏈表中的節點包含直接前驅和後繼的地址信息

不一樣類型的鏈表

單鏈表

單鏈表.png

循環鏈表

循環鏈表.png

雙線鏈表

雙向鏈表.png

鏈表頭中的基本概念

  • 頭節點內存

    • 鏈表中的輔助節點,包含指向第一個數據元素的指針
  • 數據節點it

    • 鏈表中表明數據元素的節點,表現形式爲:[數據元素 | 地址]
  • 尾節點class

    • 鏈表中的最後一個數據節點,包含的地址信息爲空

單鏈表中的節點定義

image.png

單鏈表的內部結構

image.png

頭節點在單鏈表的意義:

輔助數據元素的定位,方便插入和刪除操做;所以,頭節點不存儲實際的數據元素軟件

在目標位置插入數據元素

  1. 從頭節點開始,經過 current 指針定位到目標位置
  2. 從堆空間申請新的 Node 節點
  3. 執行操做:
node->value   = e;
node->next    = current->next;
current->next = node;

插入1.png

插入2.png

在目標位置刪除數據元素

  1. 從頭節點開始,經過 current 指針定位到目標位置
  2. 使用 toDel 指針指向須要刪除的節點
  3. 執行操做:
toDel = current->next;
current->next = toDel->next;
delete toDel;

刪除.png

小結

  • 鏈表中的數據元素在物理內存中無相鄰關係
  • 鏈表中的節點都包含數據域和指針域
  • 頭節點用於輔助數據元素的定位,方便插入和刪除操做
  • 插入和刪除操做須要保證鏈表的完成性

以上內容整理於狄泰軟件學院系列課程,請你們保護原創!

相關文章
相關標籤/搜索