線性表(線性存儲結構)是什么
線性表又稱線性存儲結構,是最簡單的一種存儲結構,專門用來存儲邏輯關系為“一對一”的數(shù)據(jù)。
在一個數(shù)據(jù)集中,如果每個數(shù)據(jù)的左側都有且僅有一個數(shù)據(jù)和它有關系,數(shù)據(jù)的右側也有且僅有一個數(shù)據(jù)和它有關系,那么這些數(shù)據(jù)之間就是“一對一“的邏輯關系。
舉個簡單的例子:

如上圖所示,在 {1,2,3,4,5} 數(shù)據(jù)集中,每個數(shù)據(jù)的左側都有且僅有一個數(shù)據(jù)和它緊挨著(除 1 外),右側也有且僅有一個數(shù)據(jù)和它緊挨著(除 5 外),這些數(shù)據(jù)之間就是“一對一“的關系。
使用線性表存儲具有“一對一“邏輯關系的數(shù)據(jù),不僅可以將所有數(shù)據(jù)存儲到內(nèi)存中,還可以將“一對一”的邏輯關系也存儲到內(nèi)存中。
線性表存儲數(shù)據(jù)的方案可以這樣來理解,先用一根線將所有數(shù)據(jù)按照先后次序“串”起來,如下圖所示:

圖 2 中,左側是“串”起來的數(shù)據(jù),右側是空閑的物理空間。將這“一串兒”數(shù)據(jù)存放到物理空間中,有以下兩種方法:

兩種存儲方式都可以將數(shù)據(jù)之間的關系存儲起來,從線的一頭開始捋,可以依次找到每個數(shù)據(jù),且數(shù)據(jù)的前后位置沒有發(fā)生改變。
像圖 3 這樣,用一根線將具有“一對一”邏輯關系的數(shù)據(jù)存儲起來,這樣的存儲方式就稱為線性表或者線性存儲結構。
線性表的順序存儲和鏈式存儲
從圖 3 不難看出,線性表存儲數(shù)據(jù)的實現(xiàn)方案有兩種,分別是:
像圖 3a) 那樣,不破壞數(shù)據(jù)的前后次序,將它們連續(xù)存儲在內(nèi)存空間中,這樣的存儲方案稱為順序存儲結構(簡稱順序表);
像圖 3b) 那樣,將所有數(shù)據(jù)分散存儲在內(nèi)存中,數(shù)據(jù)之間的邏輯關系全靠“一根線”維系,這樣的存儲方案稱為鏈式存儲結構(簡稱鏈表)。
也就是說,使用線性表存儲數(shù)據(jù),有兩種真正可以落地的存儲方案,分別是順序表和鏈表。
前驅(qū)和后繼
在具有“一對一“邏輯關系的數(shù)據(jù)集中,每個個體習慣稱為數(shù)據(jù)元素(簡稱元素)。例如,圖 1 顯示的這組數(shù)據(jù)集中,一共有 5 個元素,分別是 1、2、3、4 和 5。
此外,很多教程中喜歡用前驅(qū)和后繼來描述元素之間的前后次序:
某一元素的左側相鄰元素稱為該元素的“直接前驅(qū)”,此元素左側的所有元素統(tǒng)稱為該元素的“前驅(qū)元素”;
某一元素的右側相鄰元素稱為該元素的“直接后繼”,此元素右側的所有元素統(tǒng)稱為該元素的“后繼元素”;
以圖 1 數(shù)據(jù)中的元素 3 來說,它的直接前驅(qū)是 2 ,此元素的前驅(qū)元素有 2 個,分別是 1 和 2;同理,此元素的直接后繼是 4 ,后繼元素也有 2 個,分別是 4 和 5。
