版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第1章章 緒論緒論第第2章章 線性表線性表第第3章章 棧和隊(duì)列棧和隊(duì)列 第第4章章 串串第第5章章 數(shù)組和廣義表數(shù)組和廣義表第第6 6章章 樹和二叉樹樹和二叉樹 第第7章章 圖圖第第9章章 查找查找第第10章章 排序排序目目 錄錄什么是什么是線性結(jié)構(gòu)?線性結(jié)構(gòu)?3線性結(jié)構(gòu)的定義:線性結(jié)構(gòu)的定義:若結(jié)構(gòu)是非空有限集,則有且僅有一個(gè)開始結(jié)點(diǎn)和一個(gè)若結(jié)構(gòu)是非空有限集,則有且僅有一個(gè)開始結(jié)點(diǎn)和一個(gè)終端結(jié)點(diǎn),并且所有結(jié)點(diǎn)都最多只有一個(gè)直接前趨和一個(gè)直終端結(jié)點(diǎn),并且所有結(jié)點(diǎn)都最多只有一個(gè)直接前趨和一個(gè)直接后繼。接后繼。 可表示為:(可表示為:(a a1 1 , a, a2 2 , , , a, an
2、n) 簡(jiǎn)言之,線性結(jié)構(gòu)反映結(jié)點(diǎn)間的邏輯關(guān)系是簡(jiǎn)言之,線性結(jié)構(gòu)反映結(jié)點(diǎn)間的邏輯關(guān)系是 的。的。特點(diǎn)特點(diǎn) 只有一個(gè)首結(jié)點(diǎn)和尾結(jié)點(diǎn);只有一個(gè)首結(jié)點(diǎn)和尾結(jié)點(diǎn);特點(diǎn)特點(diǎn) 除首尾結(jié)點(diǎn)外,其他結(jié)點(diǎn)只有一個(gè)直接前驅(qū)和一個(gè)除首尾結(jié)點(diǎn)外,其他結(jié)點(diǎn)只有一個(gè)直接前驅(qū)和一個(gè)直接后繼。直接后繼。特點(diǎn)特點(diǎn) ai ai是屬于某個(gè)數(shù)據(jù)對(duì)象同一類型的元素,它是屬于某個(gè)數(shù)據(jù)對(duì)象同一類型的元素,它可以是一個(gè)數(shù)字、一個(gè)字母或一個(gè)記錄。可以是一個(gè)數(shù)字、一個(gè)字母或一個(gè)記錄。線性結(jié)構(gòu)包括:線性結(jié)構(gòu)包括:線性表、堆棧、隊(duì)列、字符串、數(shù)組線性表、堆棧、隊(duì)列、字符串、數(shù)組等,其中最典型、最常用的是等,其中最典型、最常用的是-一對(duì)一一對(duì)一 (1:1
3、)45(a1, a2, ai-1,ai, ai1 ,, an)2.1 線性表的邏輯結(jié)構(gòu)線性表的邏輯結(jié)構(gòu) 用數(shù)據(jù)元素的有限序列表示用數(shù)據(jù)元素的有限序列表示n=0時(shí)稱為時(shí)稱為數(shù)據(jù)元素?cái)?shù)據(jù)元素線性起點(diǎn)線性起點(diǎn)ai的直接前趨的直接前趨ai的直接后繼的直接后繼下標(biāo),下標(biāo),是元素的是元素的序號(hào),表示元素序號(hào),表示元素在表中的位置在表中的位置n為元素總為元素總個(gè)數(shù),即表個(gè)數(shù),即表長(zhǎng)。長(zhǎng)??毡砜毡砭€性終點(diǎn)線性終點(diǎn)6 ( A, B, C, D, , Z)學(xué)號(hào)學(xué)號(hào)姓名姓名性別性別年齡年齡班級(jí)班級(jí)40306114陳建武陳建武男男 192003級(jí)電信級(jí)電信0301班班40306115趙玉鳳趙玉鳳女女 182003級(jí)電
4、信級(jí)電信0302班班40306116王王 澤澤男男 192003級(jí)電信級(jí)電信0303班班40306117薛薛 荃荃男男 192003級(jí)電信級(jí)電信0304班班40306118王 春男 19192003級(jí)電信級(jí)電信0305班班: :例例2 分析學(xué)生情況登記表是什么結(jié)構(gòu)。分析學(xué)生情況登記表是什么結(jié)構(gòu)。分析:分析:數(shù)據(jù)元素都是同類型(數(shù)據(jù)元素都是同類型(記錄記錄),元素間關(guān)系是線性的。),元素間關(guān)系是線性的。分析:分析: 數(shù)據(jù)元素都是同類型(數(shù)據(jù)元素都是同類型(字母字母),), 元素間關(guān)系是線性的。元素間關(guān)系是線性的。例例1 分析分析26 個(gè)英文字母組成的英文表是什么結(jié)構(gòu)。個(gè)英文字母組成的英文表是什么
5、結(jié)構(gòu)。7“同一數(shù)據(jù)邏輯結(jié)構(gòu)中的所有數(shù)據(jù)元素都具有相同的特性同一數(shù)據(jù)邏輯結(jié)構(gòu)中的所有數(shù)據(jù)元素都具有相同的特性”是指數(shù)據(jù)元素所包含的是指數(shù)據(jù)元素所包含的數(shù)據(jù)項(xiàng)的個(gè)數(shù)數(shù)據(jù)項(xiàng)的個(gè)數(shù)都相等。都相等。試判斷下列敘述的正誤:試判斷下列敘述的正誤:82.2 線性表的順序表示和實(shí)現(xiàn)線性表的順序表示和實(shí)現(xiàn)2.2.1 順序表的表示順序表的表示2.2.2 順序表的實(shí)現(xiàn)順序表的實(shí)現(xiàn)2.2.3 順序表的運(yùn)算效率分析順序表的運(yùn)算效率分析92.2.1 順序表的表示順序表的表示用一組用一組地址連續(xù)地址連續(xù)的存儲(chǔ)單元依次的存儲(chǔ)單元依次存儲(chǔ)線性表的元素存儲(chǔ)線性表的元素。把邏輯上相鄰的數(shù)據(jù)元素存儲(chǔ)在物把邏輯上相鄰的數(shù)據(jù)元素存儲(chǔ)在物理
6、上相鄰的存儲(chǔ)單元中的存儲(chǔ)結(jié)構(gòu)。理上相鄰的存儲(chǔ)單元中的存儲(chǔ)結(jié)構(gòu)。線性表的順序表示又稱為線性表的順序表示又稱為順序存儲(chǔ)結(jié)構(gòu)順序存儲(chǔ)結(jié)構(gòu)或順序映像。或順序映像。順序存儲(chǔ)定義:順序存儲(chǔ)定義:順序存儲(chǔ)方法:順序存儲(chǔ)方法:特點(diǎn):特點(diǎn):邏輯上相鄰的元素,物理上也相鄰邏輯上相鄰的元素,物理上也相鄰可以利用可以利用數(shù)組數(shù)組VnVn來(lái)實(shí)現(xiàn)來(lái)實(shí)現(xiàn)注意:在注意:在C C語(yǔ)言中數(shù)組的下標(biāo)是從語(yǔ)言中數(shù)組的下標(biāo)是從0 0開始,即:開始,即: VnVn的有效范圍是從的有效范圍是從 V0V0Vn-1Vn-1101. 邏輯上相鄰的數(shù)據(jù)元素,其物理上也相鄰;邏輯上相鄰的數(shù)據(jù)元素,其物理上也相鄰;2. 若已知表中首元素在存儲(chǔ)器中的位
7、置,則其他元若已知表中首元素在存儲(chǔ)器中的位置,則其他元素存放位置亦可求出素存放位置亦可求出(利用數(shù)組利用數(shù)組VnVn的的下標(biāo)下標(biāo))。設(shè)首元素設(shè)首元素a1的存放地址為的存放地址為L(zhǎng)OC(a1)(稱為稱為首地址首地址),),設(shè)每個(gè)元素占用存儲(chǔ)空間(地址長(zhǎng)度)為設(shè)每個(gè)元素占用存儲(chǔ)空間(地址長(zhǎng)度)為L(zhǎng)字節(jié),字節(jié),則表中任一數(shù)據(jù)元素的則表中任一數(shù)據(jù)元素的存放地址存放地址為:為: LOC ( ai+1 ) = LOC( ai ) + L 對(duì)上述公式的解釋如圖所示對(duì)上述公式的解釋如圖所示線性表順序存儲(chǔ)特點(diǎn):線性表順序存儲(chǔ)特點(diǎn):11a a1 1a a2 2a ai ia ai+1i+1a an n 地址地址
8、內(nèi)容內(nèi)容 元素在表中的位序元素在表中的位序1 1i i2 2n n空閑區(qū)空閑區(qū)i+1i+1Lb=LOC(a1)b + + L Lb +(i-1)+(i-1)L Lb +(n-1)+(n-1)L Lb +(max-1)+(max-1)L L線性表的順序存儲(chǔ)結(jié)構(gòu)示意圖線性表的順序存儲(chǔ)結(jié)構(gòu)示意圖12設(shè)有一維數(shù)組設(shè)有一維數(shù)組,下標(biāo)的范圍是,下標(biāo)的范圍是到到,每個(gè)數(shù),每個(gè)數(shù)組元素用相鄰的組元素用相鄰的個(gè)字節(jié)個(gè)字節(jié)存儲(chǔ)。存儲(chǔ)器按字節(jié)編址,存儲(chǔ)。存儲(chǔ)器按字節(jié)編址,設(shè)存儲(chǔ)數(shù)組元素設(shè)存儲(chǔ)數(shù)組元素 的第一個(gè)字節(jié)的地址是的第一個(gè)字節(jié)的地址是,則則 的第一個(gè)字節(jié)的地址是多少?的第一個(gè)字節(jié)的地址是多少?113但此題要注
9、意下標(biāo)起點(diǎn)略有不同:但此題要注意下標(biāo)起點(diǎn)略有不同:LOC( M3 ) = 98 + 5 (4-1) =113解:解:已知地址計(jì)算通式為:已知地址計(jì)算通式為:LOC(ai) = LOC(a1) + L *(i-1)例例1 113 char V30;void build() /*字母線性表的生成,即字母線性表的生成,即建表操作建表操作*/ int i;V0=a;for( i=1; i=n-1; i+ ) Vi=Vi-1+1; 核心語(yǔ)句:核心語(yǔ)句:例例2用數(shù)組用數(shù)組V來(lái)存放來(lái)存放26個(gè)英文字母組成的線性表(個(gè)英文字母組成的線性表(a,b,c,z),寫出在順序結(jié)構(gòu)上),寫出在順序結(jié)構(gòu)上生成生成和和顯示
10、顯示該表的該表的C語(yǔ)言語(yǔ)言程序。程序。14void main(void) /*主函數(shù)主函數(shù),字母線性表的,字母線性表的生成和輸出生成和輸出*/ n=26; /* n n是表長(zhǎng),是數(shù)據(jù)元素的個(gè)數(shù),而不是是表長(zhǎng),是數(shù)據(jù)元素的個(gè)數(shù),而不是V V的的 實(shí)際下標(biāo)實(shí)際下標(biāo)*/build( );display( );void display( ) /*字母線性表的顯示,即字母線性表的顯示,即讀表操作讀表操作*/ int i;for( i=0; i=i; j )aj+1=a j ; a i =x; n+;/ / 元素后移一個(gè)位置元素后移一個(gè)位置/ / 插入插入x x / / 表長(zhǎng)加表長(zhǎng)加1 1 核核心心語(yǔ)語(yǔ)句
11、:句:2)2)插入插入17在線性表的第在線性表的第i i個(gè)位置前插入一個(gè)元素的示意圖如下:個(gè)位置前插入一個(gè)元素的示意圖如下:1213212428304277121321242830427712345678123456789插入插入18實(shí)現(xiàn)步驟:實(shí)現(xiàn)步驟:將第將第i+1 至第至第n 位的元素向前移動(dòng)一個(gè)位置;位的元素向前移動(dòng)一個(gè)位置;表長(zhǎng)減表長(zhǎng)減1。注意:事先需要判斷,注意:事先需要判斷,刪除位置刪除位置i 是否合法是否合法?應(yīng)當(dāng)有應(yīng)當(dāng)有1in 或或 i=1, n刪除線性表的第刪除線性表的第i i個(gè)位置上的元素個(gè)位置上的元素for ( j=i+1; j=n; j+ )aj-1=aj; n-;/
12、/ 元素前移一個(gè)位置元素前移一個(gè)位置/ / 表長(zhǎng)減表長(zhǎng)減1 1 核心語(yǔ)句:核心語(yǔ)句:3)3)刪除刪除19123456789121321242528304277123456781213212428304277刪除順序表中某個(gè)指定的元素的示意圖如下:刪除順序表中某個(gè)指定的元素的示意圖如下:順序表插入和刪除的完整程序請(qǐng)同學(xué)們自編。順序表插入和刪除的完整程序請(qǐng)同學(xué)們自編。202.2.3 順序表的運(yùn)算效率分析順序表的運(yùn)算效率分析算法時(shí)間主要耗費(fèi)在算法時(shí)間主要耗費(fèi)在移動(dòng)元素移動(dòng)元素的操作上,因此的操作上,因此計(jì)算時(shí)間復(fù)雜度的基本操作(最深層語(yǔ)句頻度)計(jì)算時(shí)間復(fù)雜度的基本操作(最深層語(yǔ)句頻度) T(n)=
13、O (移動(dòng)移動(dòng)元素次數(shù)元素次數(shù))而移動(dòng)元素的個(gè)數(shù)取決于插入或刪除元素的位置而移動(dòng)元素的個(gè)數(shù)取決于插入或刪除元素的位置.思考:思考:若插入在尾結(jié)點(diǎn)之后,則根本無(wú)需移動(dòng)(特別快);若插入在尾結(jié)點(diǎn)之后,則根本無(wú)需移動(dòng)(特別快);若插入在首結(jié)點(diǎn)之前,則表中元素全部要后移(特別慢);若插入在首結(jié)點(diǎn)之前,則表中元素全部要后移(特別慢);應(yīng)當(dāng)考慮在各種位置插入(共應(yīng)當(dāng)考慮在各種位置插入(共n+1種可能)的種可能)的平均平均移動(dòng)次數(shù)才合理。移動(dòng)次數(shù)才合理。討論討論1:若在長(zhǎng)度為若在長(zhǎng)度為 n 的線性表的第的線性表的第 i 位前位前 插入插入一個(gè)元素,一個(gè)元素,則向后移動(dòng)元素的次數(shù)則向后移動(dòng)元素的次數(shù)f(n)為
14、為:f(n) = n i + 1時(shí)間效率分析時(shí)間效率分析:21推導(dǎo):推導(dǎo):假定在每個(gè)元素位置上插入假定在每個(gè)元素位置上插入x x的可能性都一樣(即的可能性都一樣(即概率概率P P相同),則應(yīng)當(dāng)這樣來(lái)計(jì)算平均執(zhí)行時(shí)間:相同),則應(yīng)當(dāng)這樣來(lái)計(jì)算平均執(zhí)行時(shí)間:若在首結(jié)點(diǎn)前插入,需要移動(dòng)的元素最多,后移若在首結(jié)點(diǎn)前插入,需要移動(dòng)的元素最多,后移n n次;次;若在若在a a1 1后面插入,要后移后面插入,要后移n-1n-1個(gè)元素,后移次數(shù)為個(gè)元素,后移次數(shù)為n-1n-1; ;若在若在a an-1n-1后面插入,要后移后面插入,要后移1 1個(gè)元素;個(gè)元素;若在尾結(jié)點(diǎn)若在尾結(jié)點(diǎn)a an n之后插入,則后移之
15、后插入,則后移0 0個(gè)元素;個(gè)元素;所有可能的元素移動(dòng)次數(shù)合計(jì)所有可能的元素移動(dòng)次數(shù)合計(jì): 0+1+0+1+n+n = n(n+1)/2 = n(n+1)/2故插入時(shí)的平均移動(dòng)次數(shù)為:故插入時(shí)的平均移動(dòng)次數(shù)為:n(n+1)/2n(n+1)/2(n+1n+1)n/2n/2 共有多少種插入形式共有多少種插入形式? ?連頭帶尾有連頭帶尾有n+1n+1種種! !22同理可證:同理可證:順序表刪除一元素的時(shí)間效率為順序表刪除一元素的時(shí)間效率為: :T T(n)=(n-1)/2 n)=(n-1)/2 順序表插入、刪除算法的順序表插入、刪除算法的平均平均空間空間復(fù)雜度復(fù)雜度為多少?為多少?插入插入效率:效率
16、:刪除刪除效率:效率:11111(1)(1)12nnisiiinEp ninin 1111()()2nndliiinEq ninin教材教材P25算法算法2.5也是對(duì)執(zhí)行效率的推導(dǎo):也是對(duì)執(zhí)行效率的推導(dǎo):因?yàn)闆](méi)有因?yàn)闆](méi)有占用輔助占用輔助空間!空間!含義:對(duì)于順序表,含義:對(duì)于順序表,插入、刪除操作平均需要插入、刪除操作平均需要移動(dòng)一半元素移動(dòng)一半元素( n / 2 )O(1)O(1)即插入、刪除算法的平均即插入、刪除算法的平均時(shí)間復(fù)雜度為時(shí)間復(fù)雜度為 O(n)23鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)本節(jié)小結(jié)本節(jié)小結(jié)線性表線性表順序存儲(chǔ)結(jié)構(gòu)特點(diǎn)順序存儲(chǔ)結(jié)構(gòu)特點(diǎn):邏輯關(guān)系上相鄰的兩個(gè)元素:邏輯關(guān)系上相鄰的兩個(gè)
17、元素在物理存儲(chǔ)位置上也相鄰;在物理存儲(chǔ)位置上也相鄰;優(yōu)點(diǎn):優(yōu)點(diǎn):可以隨機(jī)存取表中任一元素,方便快捷;可以隨機(jī)存取表中任一元素,方便快捷;缺點(diǎn):缺點(diǎn):在插入或刪除某一元素時(shí),需要移動(dòng)大量元素。在插入或刪除某一元素時(shí),需要移動(dòng)大量元素。解決問(wèn)題的思路:解決問(wèn)題的思路:改用另一種線性存儲(chǔ)方式:改用另一種線性存儲(chǔ)方式:24課堂討論:課堂討論:順序表的順序表的“宏觀宏觀”算法該如何書寫?算法該如何書寫?采用采用抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型來(lái)表示來(lái)表示順序表的存儲(chǔ)結(jié)構(gòu)是一維數(shù)組,如果插入順序表的存儲(chǔ)結(jié)構(gòu)是一維數(shù)組,如果插入的元素個(gè)數(shù)超過(guò)數(shù)組定義的長(zhǎng)度怎么辦?的元素個(gè)數(shù)超過(guò)數(shù)組定義的長(zhǎng)度怎么辦?采用采用動(dòng)態(tài)分配
18、動(dòng)態(tài)分配的一維數(shù)組的一維數(shù)組25線性表的定義線性表的定義(見(jiàn)教材見(jiàn)教材P19)ADT List 數(shù)據(jù)對(duì)象:數(shù)據(jù)對(duì)象:D=ai | aiElemSet, i=1,2,n,n0數(shù)據(jù)關(guān)系:數(shù)據(jù)關(guān)系:R1= | ai 1, ai D, i=2,n基本操作:基本操作:l初始化、撤銷、清空、判空;初始化、撤銷、清空、判空;l求表長(zhǎng)、表頭、表尾、前趨、后繼;求表長(zhǎng)、表頭、表尾、前趨、后繼;l讀元素、查找(含定位)、遍歷;讀元素、查找(含定位)、遍歷;l插入、刪除插入、刪除 ADT List26線性表的基本操作如何表示?線性表的基本操作如何表示? (見(jiàn)教材(見(jiàn)教材P19)InitList( &L ); /建空
19、表,初始化建空表,初始化DestoryList( &L ); /撤銷表,釋放內(nèi)存撤銷表,釋放內(nèi)存int LengthList( L ); /求表中元素個(gè)數(shù),即表長(zhǎng)求表中元素個(gè)數(shù),即表長(zhǎng)POSITION LocateElem (L,ElemType e,compare() );PriorElem( L, cur_e, &pre_e ); /求當(dāng)前元素求當(dāng)前元素e的前驅(qū)的前驅(qū)NextElem( L, cur_e, &next_e ); /求當(dāng)前元素求當(dāng)前元素e的后繼的后繼ListInsertBefore(&L, i, e ); /把把e插入到第插入到第i個(gè)元素之前個(gè)元素之前ListDelete( &L, i,&e ); /刪除第刪除第i個(gè)元素并個(gè)元素并“看看”此元素此元素ListTraverse( L, Visit() ); / “看看”表中全部元素(遍歷)表中全部元素(遍歷)l初始化
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年西藏地區(qū)電子勞動(dòng)協(xié)議啟用及管理細(xì)則版
- 2023-2024年人教版八年級(jí)上歷史期末模擬試卷(25+3)解析版
- 2024年郵輪旅游貨物運(yùn)輸合同
- 2023-2024消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)高頻考點(diǎn)知識(shí)梳理
- 2022年中考化學(xué)模擬卷5(重慶專用)
- 2023-2024年執(zhí)業(yè)藥師之西藥學(xué)專業(yè)試題庫(kù)
- 2022年中考化學(xué)復(fù)習(xí)實(shí)驗(yàn)突破:化學(xué)基本實(shí)驗(yàn)
- 2024版新品居間銷售合同3篇
- 2024年酒店管理服務(wù)保密協(xié)議與運(yùn)營(yíng)合作
- 2024年版物聯(lián)網(wǎng)智能硬件產(chǎn)品生產(chǎn)銷售合同
- 《急性心梗的自救》課件
- 中成藥手冊(cè)完整版本
- 2023-2024學(xué)年成都市金牛區(qū)九年級(jí)上英語(yǔ)(一診)期末考試題(含答案)
- 2023年MC主管年終業(yè)務(wù)工作總結(jié)
- 廣東省物業(yè)管理?xiàng)l例2024:業(yè)主大會(huì)與業(yè)主委員會(huì)組織規(guī)定
- 員工賠償金保密協(xié)議
- 空靈鼓社團(tuán)教學(xué)計(jì)劃
- (法律資料)城管執(zhí)法操作實(shí)務(wù)
- 廣東省珠海市2022-2023六年級(jí)上學(xué)期數(shù)學(xué)期末試卷(含答案)
- 山東省青島市第二中學(xué)2023-2024學(xué)年化學(xué)高二第一學(xué)期期末綜合測(cè)試試題含解析
- 網(wǎng)上商城 售后服務(wù)范本
評(píng)論
0/150
提交評(píng)論