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

2021-09-01 11:17:15 字數 1910 閱讀 7803

用一組位址連續的儲存單元依次儲存線性表的資料元素,資料元素之間的邏輯關係通過資料元素的儲存位置直接反映。

記做 ( a1,a2,a3,… … , an )

所謂乙個元素的位址是指該元素占用的若干(連續的)儲存單元的第乙個單元的位址。記做loc(ai)

若假設每個資料元素占用k個儲存單元,並且已知第乙個元素的儲存位置loc(a1),則有loc(ai) = loc(a1)+(i−1)×k

在c語言中,順序儲存結構的定義如下:

#define maxsize 100

elemtype a[maxsize];

int n;

其中,maxsize表示預先分配給線性表的空間大小,n表示表的長度

1、確定元素item在長度為n的線性表a中的位置(位置比下標大1)

int

locate

( elemtype a,

int n, elemtype item )

return-1

;/*查詢失敗,返回資訊-1 */

}

時間複雜度o(n)2、在長度為n的線性表a的第i個位置上插入乙個新的資料元素item正常情況下需要做的工作:

(1)將第i個元素至第n個元素依次後移乙個位置;

(2)將被插入元素插入表的第i個位置;

(3)修改表的長度(表長增1);

異常情況:

(1)是否表滿?n=maxsize;

(2)插入位置是否合適?正常位置:1≤i≤n+1)

int

insertlist

(elemtype a,

int&n,

int i, elemtype item )

該演算法的時間複雜度是o(n),如下:

3、刪除長度為n的線性表a的第i個資料元素

正常情況下需要做的工作:

(1)將第i+1個元素至第n個元素依次前移乙個位置;

(2)修改表的長度(表長減1)。

需要考慮的異常情況:

(1)是否表空?(n=0?)

(2)刪除位置是否合適?(正常位置:1≤i≤n)

int

deletelist

( elemtype a,

int&n,

int i )

該演算法的時間複雜度為o(n)

1、優點

(1)構造原理簡單、直觀,易理解。

(2)元素的儲存位址可以通過乙個簡單的解析式計算出來(loc(ai)=loc(a1)+(i−1)×k)。是一種隨機儲存結構,儲存速度快。

(3)由於只需存放資料元素本身的資訊,而無其他空間開銷,相對鏈式儲存結構而言,儲存空間開銷小(僅此而已)。

2、缺點

(1)儲存分配需要事先進行。

(2)需要一片位址連續的儲存空間。

(3)基本操作(如插入、刪除)的時間效率較低(o(n))。

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

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

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

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

線性表 順序儲存結構

s1線性表的基本概念 1 有而且只有乙個 第一元素 2 有而且只有乙個 最後元素 3 除第一元素之外,其他元素都有唯一的直接前驅。4 除最後元素之外,其他元素都有唯一的直接後繼。s2計算公式 若第乙個元素的位址是a,每個元素占用的儲存空間為d,則陣列的第i個元素的位址可以用如下公式計算 loc i ...