用一組位址連續的儲存單元依次儲存線性表的資料元素,資料元素之間的邏輯關係通過資料元素的儲存位置直接反映。
記做 ( 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 ...