線性表的順序儲存結構
對於順序儲存結構的線性表我們這裡直接稱之為線性表,後面一系列關於資料結構的文章中都這樣宣告。(我們為了後面的方便,才這樣宣告的)
線性表中的元素型別都是一樣的,假設線性表中的每個元素占用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 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...