小甲魚資料結構03線性表的順序儲存結構

2021-07-10 18:42:23 字數 2214 閱讀 3924

線性表的順序儲存結構

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...