線性表的順序儲存結構 二

2021-07-04 11:48:48 字數 1565 閱讀 1503

線性表的順序儲存結構

對於順序儲存結構的線性表我們這裡直接稱之為線性表,後面一系列關於資料結構的文章中都這樣宣告。(我們為了後面的方便,才這樣宣告的)

線性表中的元素型別都是一樣的,假設線性表中的每個元素占用c個位元組的儲存單元。那麼線性表中第i + 1個資料元素和第i個資料元素的儲存位址的關係是addr(a(i + 1)) = addr(ai )  + c,其中addr表示求得相應位置的位址。則線性表中的第i個資料元素ai的儲存位址依據下面的公式可以由a1推算得到:

addr(ai) = addr(a1) + (i - 1)*c

通過這個公式,我們可以計算出線性表中任一元素的位址,這樣每個元素的儲存時間效能為o(1),我們通常稱順序儲存結構的線性表為隨機儲存結構。

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

#define maxsize 100

typedef float elemtype

typedef struct

slist;

1)插入位置不合理或線性表長度等於陣列長度,丟擲異常。

2)從最後乙個元素開始向前遍歷到第i個位置,分別將它們都向後移動乙個位置。

3)將要插入元素填入位置i處。

4)線性表長加1。

#define bingo 1

#define error 0

#define maxsize 100

typedef float elemtype;

typedef struct

slist;

int listinsert(slist *l,int i,elemtype y)

l->data[i - 1] = y;

l->length++;

return bingo;

}void main()

,10};//結構體的初始化

slist *l = &student;

listinsert(l,11,100);

for(int i = 1;i <= l->length;i++)

slist;

int listdelete(slist *l,int i,elemtype &y)//刪除線性表中第i個位置的元素

l->length--;

return bingo;

}void main()

,10};//結構體的初始化

slist *l = &student;

elemtype a ;

listdelete(l,6,a);

cout<<"a="{ cout線性表插入和刪除的時間複雜度:

線性表的順序儲存結構,在存、讀資料時,不管是哪個位置,時間複雜度都是o(1)。而在插入或刪除時,時間複雜度都是o(n)。

線性表的順序儲存結構的優缺點:

優點:1)無需為表示表中元素之間的邏輯關係而增加額外的儲存空間。2)可以快速訪問表中任意位置的元素。

缺點:1)插入和刪除操作都需要移除大量的元素。2)當線性表長度變化較大時,難以確定儲存空間的容量。

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

用一組位址連續的儲存單元依次儲存線性表的資料元素,資料元素之間的邏輯關係通過資料元素的儲存位置直接反映。記做 a1,a2,a3,an 所謂乙個元素的位址是指該元素占用的若干 連續的 儲存單元的第乙個單元的位址。記做loc ai 若假設每個資料元素占用k個儲存單元,並且已知第乙個元素的儲存位置loc ...

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

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

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

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