什麼是線性表(線性儲存結構)

2021-10-23 11:45:48 字數 1613 閱讀 6142

通過前面的學習我們知道,具有「一對一」邏輯關係的資料,最佳的儲存方式是使用線性表。那麼,什麼是線性表呢?

線性表,全名為線性儲存結構。使用線性表儲存資料的方式可以這樣理解,即「把所有資料用一根線兒串起來,再儲存到物理空間中」。

圖 1 "一對一"邏輯關係的資料:

如圖 1 所示,這是一組具有「一對一」關係的資料,我們接下來採用線性表將其儲存到物理空間中。

首先,用「一根線兒」把它們按照順序「串」起來,如圖 2 所示:

圖 2 資料的"線性"結構

圖 2 中,左側是「串」起來的資料,右側是空閒的物理空間。把這「一串兒」資料放置到物理空間,我們可以選擇以下兩種方式,如圖 3 所示。

圖 3 兩種線性儲存結構

圖 3a) 是多數人想到的儲存方式,而圖 3b) 卻少有人想到。我們知道,資料儲存的成功與否,取決於是否能將資料完整地復原成它本來的樣子。如果把圖 3a) 和圖 3b) 線的一頭扯起,你會發現資料的位置依舊沒有發生改變(和圖 1 一樣)。因此可以認定,這兩種儲存方式都是正確的。

將具有「一對一」關係的資料「線性」地儲存到物理空間中,這種儲存結構就稱為線性儲存結構(簡稱線性表)。

使用線性表儲存的資料,如同向陣列中儲存資料那樣,要求資料型別必須一致,也就是說,線性表儲存的資料,要麼全不都是整形,要麼全部都是字串。一半是整形,另一半是字串的一組資料無法使用線性表儲存。

順序儲存結構和鏈式儲存結構

圖 3 中我們可以看出,線性表儲存資料可細分為以下 2 種:

如圖 3a) 所示,將資料依次儲存在連續的整塊物理空間中,這種儲存結構稱為順序儲存結構(簡稱順序表);

如圖 3b) 所示,資料分散的儲存在物理空間中,通過一根線儲存著它們之間的邏輯關係,這種儲存結構稱為鏈式儲存結構(簡稱鍊錶);

也就是說,線性表儲存結構可細分為順序儲存結構和鏈式儲存結構

前驅和後繼

資料結構中,一組資料中的每個個體被稱為「資料元素」(簡稱「元素」)。例如,圖 1 顯示的這組資料,其中 1、2、3、4 和 5 都是這組資料中的乙個元素。

另外,對於具有「一對一」邏輯關係的資料,我們一直在用「某一元素的左側(前邊)或右側(後邊)」這樣不專業的詞,其實線性表中有更準確的術語:

某一元素的左側相鄰元素稱為「直接前驅」,位於此元素左側的所有元素都統稱為「前驅元素」;

某一元素的右側相鄰元素稱為「直接後繼」,位於此元素右側的所有元素都統稱為「後繼元素」;

以圖 1 資料中的元素 3 來說,它的直接前驅是 2 ,此元素的前驅元素有 2 個,分別是 1 和 2;同理,此元素的直接後繼是 4 ,後繼元素也有 2 個,分別是 4 和 5。如圖 4 所示:

線性表(線性儲存結構)

線性表有兩種物理儲存結構 順序儲存結構和鏈式儲存結構 順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。陣列 如 a1,a2,an 物理上的儲存方式事實上就是在記憶體中找個初始位址,然後通過佔位的形式,把一定的記憶體空間給佔了,然後把相同資料型別的資料元素依次放到這塊空地種。1.儲...

線性表線性(順序)儲存結構

實現順序表的曾刪查操作 元素結構體 define maxsize 100 線性表的最大長度 typedef int elemtype elemtype為線性表元素的型別 typedef struct sequenlist 插入操作 bool insertinseqlist sequenlist l,...

線性表 線性表的順序儲存結構

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...