線性表定義 線性表順序儲存結構

2021-10-09 11:18:18 字數 2167 閱讀 6952

線性表:由零個或多個資料元素組成的有限序列。簡單的說,就像排隊一樣,具有先一樣性質的結構。

關鍵

資料元素的個數稱為線性表的長度,當線性表長度為零時,稱為空表。

表起始位置稱表頭,表結束位置稱表尾。

線性表有兩種物理儲存結構 :順序儲存結構和鏈式儲存結構。

物理上的儲存方式事實上就是在記憶體中找個初始位址,然後通過佔位的形式,把一定的記憶體空間給佔了,然後把相同資料型別的資料元素依次放在這塊空地中。

#define maxsize 20

typedef

int elemtype;

typedef

struct

sqlist;

這裡封裝了乙個結構,事實上就是對陣列進行封裝,增加了當前長度的變數罷了。

順序儲存結構的封裝需要三個屬性

注意:陣列的長度與線性表的當前長度要區分一下:陣列的長度是存放線性表的儲存空間的總長度,一般初始化後不變。而線性表的當前長度是線性表中元素的個數,是會變化的。

線性表的順序儲存結構,在存、讀資料時,不管是在哪個位置時,時間複雜度都是o(1)。而在插入或刪除時,時間複雜度都是o(n)。

這就說明,它比較適合元素個數比較穩定,不經常插入和刪除元素,而更多的操作是訪問資料的應用。

優點:

為什麼當插入和刪除時,就要移動大量的元素?因為在相鄰兩元素的儲存位置也具有鄰居關係,它們在記憶體中的位置是緊挨著的,中間沒有間隙,當然就無法快速插入和刪除。

//資料元素的插入

status listinsert

(sqlist* l,

int i, elemtype e)

l->data[i -1]

= e;

l->length++

;return ok;

}

資料的刪除:

//資料元素的刪除

status listdelete

(sqlist* l,

int i)

l->length--

;return ok;

}

完整**:

#include

#include

#define maxsize 20

typedef

int elemtype;

typedef

struct

sqlist;

#define ok 1

#define error 0

#define ture 1

#define false 0

typedef

int status;

//資料元素的獲取

status getelem

(sqlist l,

int i, elemtype* e)

//資料元素的插入

status listinsert

(sqlist* l,

int i, elemtype e)

l->data[i -1]

= e;

l->length++

;return ok;

}//資料元素的刪除

status listdelete

(sqlist* l,

int i)

l->length--

;return ok;

}int

main()

//listinsert(l, 1, 4);

listdelete

(l,1);

printf

("%d\n"

, l-

>length)

;for

(i =

0; i < l-

>length; i++

)return0;

}

由於水平有限,部落格難免會有不足,懇請大佬們不吝賜教!

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

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...

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

include include using namespace std define ok 1 define error 0 define list init size 100 define listincrement 10 typedef int status typedef int elemty...

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

include include using namespace std define ok 1 define error 0 define list init size 100 define listincrement 10 typedef int status typedef int elemty...