線性表的順序儲存結構
1,線性表的儲存結構
:順序儲存結構和鏈式儲存結構。
2,順序儲存結構
:用一段位址連續的儲存單元依次儲存線性表的資料元素
,和陣列
一樣的。
3,線性表順序儲存的結構**
:#define maxsize 20
typedef int elemtype
typedef structsqlist;
4,順序儲存結構封裝的三個屬性:
-儲存空間的起始位置
,即陣列
data
的儲存位置。
-線性表的最大儲存容量
:陣列的長度
maxsize
-線性表的當前長度
:length
5,注意
:陣列的長度和線性表的當前長度需要區分一下
:陣列的長度是存放線性表
的儲存空間的總長度,
一般初始化後不變
,但線性表的當前長度是線性表中元素的
個數,會變化。
6,線性表的計數是從
1開始的,不是0.
7,儲存位置的計算
:(假設
elemtype占用c
個儲存單元(位元組
))loc表示獲得儲存位置的函式。
則: loc(ai+1)=loc(ai)+c
8,獲取第i
個元素**:
#define ok 1
#define error 0
#define true 1
#define false 0
#define maxsize 20
typedef int elemtype
typedef strutsqlist;
//初識條件
:順序線性表
l已存在
,1<=i<=listlength(l)
//操作結果:用
e返回
l中第
i個資料元素的值
status getelem(sqlist l,int i,elemtype *e)
*e=l.data[i-1]; //線性表中第
i個元素就是陣列下標為
(i-1)
的元素
return ok; }
插入操作:
/* 初始條件
:順序線性表
l已存在
,1<=i<=listlength(l) */
/* 操作結果:在
l中第
i個位置之前插入新的資料元素
e,l長度
+1 */
status listinsert(sqlist *l,int i,elemtype e)
if(i<1||i>l->length+1)
if(i<=l->length) }
l->data[i-1]=e;//將新的元素插入
l->length++;
return ok: }
刪除操作:
/* 初始條件:
順序線性表
l已存在
, 1<=i<=listlength(l)
操作結果 :
刪除 l
的第 i
個資料元素
, 並用
e返回其值
,l 的長度
-1 */
status listdelete(sqlist *l,int i,elemtype *e)
if(i<1||i>l->length)
*e=l->data[i-1];
if(ilength) }
l->length--;
//當前長度-1
return ok; }
線性表順序儲存結構的優缺點
9,在讀資料時
,時間複雜度為
o(1),
在插入和刪除時
,時間複雜度都為
o(n)
適合元素個數比較穩定,更多是訪問資料操作的應用。
小甲魚資料結構02談談線性表
線性表的定義 1,線性表 list 由零個或多個資料元素組成的有限序列。它是序列,所以元素之間是有個先來後到的 即有序。若元素有多個,則第乙個元素無前驅 最後乙個無後繼 其他元素有 且只有乙個前驅和乙個後繼。是有限的。元素個數n,n 0,稱為線性表的長度,當 n 0時 稱為空表。抽象資料型別 2,資...
小甲魚資料結構學習筆記 線性表(順序儲存結構)
定義 由零個或多個資料元素組成的有序序列。對定義的補充 1.零個資料元素的線性表即為空表 2.按照定義,線性表首先是乙個序列,也就是說元素之間是有先來後到的順序的。3.若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼。4.線性表強調是有限的,事實上無論計算機發...
小甲魚線性表
線性表的抽象資料型別 抽象資料型別就是把型別和操作 在一起,資料元素之間的關係是一對一的關係 adt 線性表 list data 資料 資料就是裡面所有的元素 線性表的資料物件集合,每個元素的型別均為datatype operation initlist l 初始化操作,建立乙個空的線性表l lis...