資料結構學習(一)線性表 順序表

2021-10-20 22:37:16 字數 3066 閱讀 2431

線性表定義:

線性表是由n個性質相同的資料元素組成的有序序列,n代表線性表長度。線性表內部節點都有且只有乙個直接前驅和直接後驅。

eg:字串』pomme』構成線性表(p,o,m,m,e)。

*根據線性表內的儲存形式可分為:**順序表**和**鍊錶**兩種型別。*
1.1 順序表概念

用一組位址連續的儲存單元依次儲存各元素。通過位置來表示資料元素之間的線性邏輯關係。

順序儲存的記憶體示意圖

1.2 順序表型別定義

typedef

int datatype;

struct list

;typedef

struct list* seqlist;

1.3 順序表運用

1.3.1順序表的創立與判空

seqlist setnull_seq

(int m)

else

free

(seq);}

cout <<

"建立失敗"

<< endl;

return

null;}

void

set_seq

(seqlist seq)

}

空順序表的建立關鍵在於空間的分配容易遺漏,還有條件判斷的完整性。方法並不侷限,但是個人認為大同小異,需牢記順序表的關鍵元素。
順序表的判空:

int

isnulllist_seq

(seqlist seq)

通過順序表自身元素(長度)來判空。
1.3.2 順序表的遍歷
void

cout

(seqlist seq)

}

順序表的建立以及遍歷進行簡單運用:

int

main()

其中set_seq函式是對空順序表進行賦值,**如下:
void

set_seq

(seqlist seq)

}

執行結果:

1.3.3 順序表的插入

順序表的插入過程:線性表中下標為n-和下標為n的資料元素之間插入乙個新的元素x,將長度為m的順序表變為m+1的順序表。

int

insert_seq

(seqlist seq,

int p, datatype x)

if(seq-

>n >= seq-

>max)

for(q = seq-

>n -

1; q >= p; q--

) seq-

>elem[p]

= x;

//插入x元素

seq-

>n +=1

;return1;

}

關鍵在於將指定位置之後的元素後移並改變順序表長度;操作順序則是由後向前進行。
1.3.4 順序表的刪除

順序表的刪除過程:和插入類似,將長度為n的順序表變為長度為n-1的順序表。

int

delete_seq

(seqlist seq,

int p)

//刪除下標為p的元素

for(q = p; q < seq-

>n -

1; q++

) seq-

>n -=1

;return1;

}

刪除演算法中將指定位置之後的元素直接向前移,覆蓋掉需要刪除的元素,操作順序則是由前向後進行的。
1.3.5 順序表的查詢

一般查詢思路:在順序表中查詢值為x的元素存在則返回其下標,不存在則返回-1;從順序表第乙個元素開始比較,直到最後乙個。

int

locate_seq

(seqlist seq,datatype x)

}return-1

;}

二分查詢:針對遞增有序的順序表,可採用二分查詢,也稱折半查詢;時間效率提高。

查詢過程:將需要查詢的元素與中間元素進行比較,若大於,則在後半區操作,小於則在前半區操作,操作方法相同,將查詢元素與所比較區間的中間元素進行比較,以此來縮小範圍,知道得出結果。

二分查詢(非遞迴):

int

binsearch

(seqlist seq,

int key)

else

if(seq-

>elem[mid]

> key)

else low = mid +1;

index++;}

cout <<

"查詢失敗,共進行"

<< index <<

"次查詢"

<< endl;

return-1

;}

二分查詢(遞迴):

int

binsearch_recursion

(seqlist seq,

int key,

int low,

int high)

if(seq-

>elem[mid]

> key)

if(seq-

>elem[mid]

< key)

} cout <<

"查詢失敗"

<< endl;

return-1

;}

資料結構筆記(一) 線性表(順序表 鍊錶)

資料結構筆記 一 線性表 線性表就是乙個一維的表,其中各個元素之間是一對一的。對線性表的定義 adt 線性表 list data 線性表的資料物件集合 a1,a2,an 每個元素的型別均為datatype。其中,出來第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出來最後乙個元素an外,每乙個...

資料結構 一 線性表

一 線性表的定義 線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被成為 第乙個 的資料元素 2 存在唯一的乙個被成為 最後乙個 的資料元素 3 除了第乙個之外,其他的元素均只有乙個前驅,除了最後乙個以外,其他的元素均只有乙個後繼 線性表是最常用且最簡單的一種資料結構,乙個線性表是n個...

資料結構學習 線性表

線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...