資料結構 嚴蔚敏版第二章筆記

2021-08-29 18:50:38 字數 2605 閱讀 5009

準備考研了,我們學校使用的教材不是這一本,大概整理一下。共勉

線性結構的特點:在資料元素的非空有限集合中

存在唯一的乙個被稱為「第乙個」的資料元素

存在唯一的乙個被稱為「最後乙個」的資料元素

除了第乙個之外,集合中的每個資料元均只有乙個前驅

除了最後乙個之外,集合中的每乙個元素均只有乙個後繼

2.1線性表的型別定義

線性表是最常用 且最簡單的一種資料結構,即乙個線性表是n個資料元素的有限序列。例如26個英文本母表:

(a,b,c,…z)

在稍複雜的線性表中,乙個資料元素可以由若干的資料項組成。此時,資料元素常常稱為記錄,含有大量記錄的線性表又稱為檔案

例如乙個學校的學生健康情況登記表如下圖

}2.2線性表的順序表示和實現

線性表的順序表示指的是用一組位址連續的儲存單元依次儲存線性表的資料單元。線性表的這種機內表示稱為線性表的順序儲存結構或者順序映像。稱這種儲存結構的線性表稱為順序表。只要確定了儲存線性表的起始位置,線性表中的任意乙個資料單元都可隨機訪問,所以線性表的順序儲存結構是一種隨機訪問的儲存結構。

圖中的l代表每乙個元素需要占用的l個儲存單元。

//線性表的動態分配順序儲存結構

# define list_init_size 100

//線性表儲存空間的初始分配量

# define listincreatement 10

//線性表儲存空間的分配增量

typedef

struct

sqlist;

初始化線性表

status initlist_sq

(sqlist &l)

//initlist_sq

線性表的插入操作和刪除操作

一般情況下,在第i(0<=i<=n)個元素之前插入乙個元素時,需要將第n至第i(共n-i+1)個元素向後移動乙個位置。演算法實現如下。

status listinsert_sq

(sqlist &l,

int i, elemtype e)

//q為插入的位置

q =&(l.elem[i-1]

);//插入位置以及之後的元素右移

for(p =

&(l.elem[l.length-1]

);p>=q;

--p)

//插入以及表長加1

*q = e;

++l.length;

return ok;

}//listinsert

一般情況下,刪除第i(0<=i<=n)個元素需將第i+1至n(n-i)個元素依次向前移動乙個位置。演算法實現如下。

status listdelete_sq

(sqlist &l,

int i, elemtype &e)

//listdelete_sq

由這兩個演算法得知,當在順序儲存結構的線性表中某個位置插入或者刪除乙個資料元素時,其時間主要消耗在移動元素上。平均需要移動一半的元素,時間複雜度為o(n)。

查詢

int

locateelem_sq

(sqlist l, elemtype e, status (

*compare)

(elemtype, elemtype)

)//locateelem_sq

歸併

void

mergelist_sq

(sqlist la, sqlist lb, sqlist &lc)

else

}while

(pa*pc++

= pa++

;while

(pb*pc++

= pb++;}

//mergelist_sq

嚴蔚敏資料結構筆記 第二章線性表

第二章 線 性 表 1.線性表 是由 n n 0 個資料元素組成的有限序列。2.線性表的基本運算有 1 initlist l 構造空表,即表的初始化 2 listlength l 求表的結點個數,即表長 3 getnode l,i 取表中第 i個結點,要求 1 i listlength l 4 lo...

資料結構嚴蔚敏 第二章 線性表

2.4 一元多項式的表示及相加 總結資料結構嚴蔚敏 第二章 線性表 學習的書籍為 資料結構 c語言版 清華大學出版社 該章節為書中的第 18頁 43頁。從第2章至第4章討論的 線性表 棧 佇列 串和陣列 都屬於線性結構。線性結構的基本特點是除第乙個元素無直接前驅,最後乙個元素無直接後繼之外,其他每個...

資料結構 嚴蔚敏版 緒論

資料 所有能被輸入到計算機中,且能被計算機處理的符號的集合。資料元素 資料中的乙個 個體 資料結構中討論的基本單位。資料結構 帶結構的資料元素的集合。資料的邏輯結構可以分為 1.集合結構 資料元素關係 結構之間的元素同屬於乙個集合體 2.線性結構 資料元素關係 結構之間的元素存在一對一的關係 3.樹...