大話資料結構 3 4 線性表的順序儲存結構

2021-08-28 04:27:16 字數 1147 閱讀 3880

目錄

3.4.1 順序儲存定義

3.4.2 順序儲存方式

3.4.3 資料長度與線性表長度區別

3.4.4 位址計算方法

線性表有兩種物理儲存結構:順序儲存結構和鏈式儲存結構。

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。

線性表(a1,a2....,an)的順序儲存如下:

然後通過佔位的形式,把一定的記憶體空間給佔了,  

然後把相同資料型別的資料元素依次放在這塊空地中。

比如在電影院買了票,就算空著位置,也沒有人會坐上去。這就是順序儲存結構的特性之一。

接下來看線性表順序儲存的結構**。

#define maxsize 20  // 儲存空間初始分配量

typedef int elemtype; // elemtype型別根據實際情況定,這裡假設為int

typedef struct

sqlist;

大家看到了,這裡我們封裝了乙個結構,事實上就是對陣列進行封裝,增加了個當前長度的變數罷了。

總結下,順序儲存結構封裝需要三個屬性:

注意,陣列的長度與線性表的當前長度需要區分一下: 

陣列的長度是存放線性表的儲存空間的總長度,一般初始化後不變。

而線性表的當前長度是線性表中元素的個數,是會變化的。

線性表的定義充分考慮到很多軍師級別領導的智商指數,所以決定從1開始回歸正常思維。

假設elemtype占用的是c個儲存單元(位元組),那麼線性表中第1+1個資料元素和第i個資料元素的儲存位置的關係是(loc表示獲得儲存位置的函式):

loc(ai+1) = loc(ai) + c

所以對於第1個資料元素ai的儲存位置可以由a1推算得出:loc(ai) = loc(a1) + (i-1)*c

結合下圖來理解:

通過這個公式,我們可以隨時計算出線性表中任意位置的位址,不管它是第乙個還是最後乙個,都是相同的時間。那麼它的儲存時間效能當然就為0(1),我們通常稱為隨機儲存結構。

《大話資料結構》 線性表

created by pengxiangzhou on 2021 1 24.include ifndef c ds linear list h define c ds linear list h endif c ds linear list h 線性表 順序儲存結構 順序儲存結構的三個屬性 陣列da...

大話資料結構 線性表

線性表是零個或多個資料元素的有限序列。線性表的抽象資料型別定義如下 adt 線性表 list data 線性表的資料物件集合為,每個元素的型別均為datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的...

大話資料結構筆記 線性表的順序儲存結構

線性表的順序儲存的結構 define maxsize 20 typedef int elemtype elemtype型別根據實際情況而定 typedef struct sqlist 描述順序儲存結構需要三個屬性 儲存空間的起始位置 陣列data,它的儲存位置就是儲存空間的儲存位置。線性表的最大儲存...