資料結構 線性表(順序表)

2022-02-16 17:04:17 字數 1859 閱讀 6727

1、線性表

(1)定義

具有相同特性的資料元素的乙個優先序列

第乙個元素是起始結點,最後乙個叫做終端結點

a結點的前乙個結點叫做直接前驅,後乙個結點叫做直接後繼

元素可以是簡單型別也可以是複雜型別(如:學生)的

2、線性表的順序儲存

(1)概念

把邏輯相鄰的資料元素儲存在物理上相鄰的儲存單元中的儲存結構

第乙個元素的儲存位置稱作起始位址或基位址

知道某乙個元素的儲存位置,就可以計算其他元素的儲存位置

可以用一維陣列定義線性表

(2)初始化和型別定義

初始化引數用引用:

status initlist_sq(sqlist &l)                   //

構造一 個空的順序表l

初始化引數用指標:

status initlist_sq(sqlist *l) //

構造乙個空的順序表l

順序表的型別定義:

typedef struct

sqlist;

由存放資料的陣列和個數的元素組成,elemtype是元素的型別,實際運用的時候需要替換,如:

typedef struct node  slnode;

(3)銷毀和清空

銷毀:

void destroylist(sqlist &l)

清空:

void clearlist(sqlist &l) 

(4)求長度

int

getlength(sqlist l)

(5)判斷是否為空

int

isempty(sqlist l)

3、線性表的基本操作

(1)取值

int getelem(sqlist l,int i,elemtype &e)

int

locateelem(sqlist l,elemtype e)

時間複雜度為o(n),空間複雜度為o(1),因為他沒有占用任何的輔助空間

status listinsert_sq(sqlist &l,int

i ,elemtype e)

時間複雜度為o(n),空間複雜度為o(1),因為他沒有占用任何的輔助空間

(4)刪除:將線性表l中第i個資料元素刪除   

status listdelete_sq(sqlist &l,int

i)

時間複雜度為o(n),空間複雜度為o(1),因為他沒有占用任何的輔助空間

4、特點

利用資料元素的儲存位置表示線性表中相鄰資料元素之間的前後關係,即線性表的邏輯結構與儲存結構一致

在訪問線性表時,可以快速地計算出任何乙個資料元素的儲存位址。因此可以粗略地認為,訪問每個元素所花時間相等(隨機訪問)

5、優缺點

(1)優點

(2)缺點

總結:1、相關函式

sizeof函式:計算變數x的長度

free函式:釋放指標p所指變數的儲存空間,即徹底刪除乙個變數

2、引數的傳遞方式

(1)值傳遞

(2)傳遞位址

指標,形參與實參占用不同的記憶體單元,形參的值是實參的副本

陣列作為引數傳遞的是首位址

(3)傳遞引用型別的引數

在記憶體中沒有產生實參的副本,直接對實參進行操作。資料量較大時可以節省空間。

資料結構 線性表 順序表

豐富了前邊的功能,更加完善。include include define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 using namespace std const int overflow 2 ty...

資料結構 線性表 順序表

線性表是具有相同特性的資料元素的乙個有限序列。線性表的順序儲存結構是,把線性表中的所有元素按照其邏輯順序依次儲存到從計算機儲存器中指定的儲存位置開始的一塊連續的儲存空間。include include include define maxsize 50 using namespace std 假設l...

資料結構 線性表(順序表)

順序表就是把線性表中的所有元素按照其邏輯順序,依次儲存到從指定的儲存位置開始的一塊連續的儲存空間中。這樣線性表中第乙個元素的儲存位置就是指定的儲存位置,第i 1個元素的儲存位置緊接在第i個元素的儲存位置的後面。順序表就像如下圖中的房子,每個房間左邊的數字就是該房間離0點的距離,同時也代表了房間號,房...