天天看點

【C語言 資料結構】線性表

本文借鑒​​點選跳轉​​ 下一篇:順序表的使用

這裡寫自定義目錄标題

  • ​​線性表​​
  • ​​線性表的簡介​​
  • ​​線性表的順序存儲和鍊式存儲​​
  • ​​前驅和後繼​​

線性表

線性表的簡介

線性表又稱線性存儲結構,是最簡單的一種存儲結構,專門用來存儲邏輯關系為“一對一”的資料。

在一個資料集中,如果每個資料的左側都有且僅有一個資料和它有關系,資料的右側也有且僅有一個資料和它有關系,那麼這些資料之間就是“一對一“的邏輯關系。

舉個簡單的例子:

【C語言 資料結構】線性表

如上圖所示,在 {1,2,3,4,5} 資料集中,每個資料的左側都有且僅有一個資料和它緊挨着(除 1 外),右側也有且僅有一個資料和它緊挨着(除 5 外),這些資料之間就是“一對一“的關系。

使用線性表存儲具有“一對一“邏輯關系的資料,不僅可以将所有資料存儲到記憶體中,還可以将“一對一”的邏輯關系也存儲到記憶體中

線性表存儲資料的方案可以這樣來了解,先用一根線将所有資料按照先後次序“​​串​​”起來,如下圖所示:

【C語言 資料結構】線性表

圖 2 中,左側是“串”起來的資料,右側是空閑的實體空間。将這“一串兒”資料存放到實體空間中,有以下兩種方法:

【C語言 資料結構】線性表

兩種存儲方式都可以将資料之間的關系存儲起來,從線的一頭開始捋,可以依次找到每個資料,且資料的前後位置沒有發生改變。

像圖 3 這樣,用一根線将具有“一對一”邏輯關系的資料存儲起來,這樣的存儲方式就稱為線性表或者線性存儲結構。

線性表的順序存儲和鍊式存儲

從圖 3 不難看出,線性表存儲資料的實作方案有兩種,分别是:

  • 像圖 3a) 那樣,不破壞資料的前後次序,将它們連續存儲在記憶體空間中,這樣的存儲方案稱為順序存儲結構(簡稱順序表);
  • 像圖 3b) 那樣,将所有資料分散存儲在記憶體中,資料之間的邏輯關系全靠“一根線”維系,這樣的存儲方案稱為鍊式存儲結構(簡稱連結清單)。

也就是說,使用線性表存儲資料,有兩種真正可以落地的存儲方案,分别是順序表和連結清單。

前驅和後繼

在具有“一對一“邏輯關系的資料集中,每個個體習慣稱為資料元素(簡稱元素)。例如,圖 1 顯示的這組資料集中,一共有 5 個元素,分别是 1、2、3、4 和 5。

此外,很多教程中喜歡用前驅和後繼來描述元素之間的前後次序:

  • 某一進制素的左側相鄰元素稱為該元素的“直接前驅”,此元素左側的所有元素統稱為該元素的“前驅元素”;
  • 某一進制素的右側相鄰元素稱為該元素的“直接後繼”,此元素右側的所有元素統稱為該元素的“後繼元素”;

繼續閱讀