數(shù)據(jù)結(jié)構(gòu):2 第2章線性表A.ppt
《數(shù)據(jù)結(jié)構(gòu):2 第2章線性表A.ppt》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu):2 第2章線性表A.ppt(67頁珍藏版)》請在匯文網(wǎng)上搜索。
1、上堂課上堂課要點回顧要點回顧數(shù)據(jù)結(jié)構(gòu)課程數(shù)據(jù)結(jié)構(gòu)課程涉及數(shù)學、計算機硬件和計涉及數(shù)學、計算機硬件和計算機軟件算機軟件數(shù)據(jù)結(jié)構(gòu)定義數(shù)據(jù)結(jié)構(gòu)定義指互相有關(guān)聯(lián)的數(shù)據(jù)元素的指互相有關(guān)聯(lián)的數(shù)據(jù)元素的集合,用集合,用D_S=(D,S)表示。數(shù)據(jù)結(jié)構(gòu)內(nèi)容數(shù)據(jù)結(jié)構(gòu)內(nèi)容數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和運算和運算算法效率指標算法效率指標時間效率和空間效率時間效率和空間效率1數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容邏輯結(jié)構(gòu)唯一邏輯結(jié)構(gòu)唯一存儲結(jié)構(gòu)不唯一存儲結(jié)構(gòu)不唯一運算的實現(xiàn)依賴運算的實現(xiàn)依賴于存儲結(jié)構(gòu)于存儲結(jié)構(gòu)2近近3周周上課上課內(nèi)容內(nèi)容第第2 2章章 線性表線性表第第3 3章章 棧和隊列棧和隊列第
2、第4 4章章 串串第第5 5章章 數(shù)組和廣義表數(shù)組和廣義表線性結(jié)構(gòu)線性結(jié)構(gòu)若若結(jié)結(jié)構(gòu)構(gòu)是是非非空空有有限限集集,則則有有且且僅僅有有一一個個開開始始結(jié)結(jié)點點和和一一個個終終端端結(jié)結(jié)點點,并并且且所所有有結(jié)結(jié)點點都都最最多多只只有有一一個個直接前趨和一個直接后繼。直接前趨和一個直接后繼。可表示為可表示為:(:(a1,a2,an)線性結(jié)構(gòu)的定義:線性結(jié)構(gòu)的定義:(邏輯、存儲(邏輯、存儲和運算)和運算)3第二章第二章 線性表線性表 學習指南學習指南【學習目標學習目標】1.了解線性表的邏輯結(jié)構(gòu)特性是數(shù)據(jù)元素之間存在著線性關(guān)系,在計算機中表示這種關(guān)系的兩類不同的存儲結(jié)構(gòu)是順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。用前
3、者表示的線性表簡稱為順序表順序表,用后者表示的線性表簡稱為鏈表鏈表。2.熟練掌握這兩類存儲結(jié)構(gòu)的描述方法以及線性表的基本操作在這兩種存儲結(jié)構(gòu)上的實現(xiàn)。3.能夠從時間和空間復雜度的角度綜合比較線性表兩種存儲結(jié)構(gòu)的不同特點及其適用場合。4.結(jié)合線性表類型的定義增強對抽象數(shù)據(jù)類型的理解。4【重點和難點重點和難點】鏈表是本章的重點和難點。扎實的指針操作針操作和內(nèi)內(nèi)存動態(tài)分配存動態(tài)分配的編程技術(shù)是學好本章的基本要求,分清鏈表中指針 p 和結(jié)點*p 之間的對應關(guān)系,區(qū)分鏈表中的頭結(jié)點、頭指針和首元結(jié)點的不同所指以及循環(huán)鏈表、雙向鏈表的特點等?!局R點知識點】線性表、順序表、鏈表【學習指南學習指南】本章建議
4、完成的算法設(shè)計題為:2.11,2.21,2.19,2.22,2.24,2.27,2.28,2.38 第二章第二章 線性表線性表 學習指南學習指南(續(xù))5線性結(jié)構(gòu)的特點:線性結(jié)構(gòu)的特點:只有一個首結(jié)點和尾結(jié)點;只有一個首結(jié)點和尾結(jié)點;除除首首尾尾結(jié)結(jié)點點外外,其其他他結(jié)結(jié)點點只只有有一一個個直直接接前前驅(qū)驅(qū)和和一一個直接后繼。個直接后繼。線性結(jié)構(gòu)表達式:(線性結(jié)構(gòu)表達式:(a1,a2,an)線性結(jié)構(gòu)包括線性表、堆棧、隊列、字符串、數(shù)線性結(jié)構(gòu)包括線性表、堆棧、隊列、字符串、數(shù)組等等,其中,最典型、最常用的是組等等,其中,最典型、最常用的是-線性表線性表簡言之,線性結(jié)構(gòu)反映結(jié)點間的邏輯關(guān)系是簡言之,
5、線性結(jié)構(gòu)反映結(jié)點間的邏輯關(guān)系是一對一一對一的的見見第第2章章6第二章第二章線性表線性表2.1 2.1 線性表的類型定義線性表的類型定義2.2 2.2 線性表的順序表示和實現(xiàn)線性表的順序表示和實現(xiàn)2.3 2.3 線性表的鏈式表示和實現(xiàn)線性表的鏈式表示和實現(xiàn) 2.3.1 2.3.1 線性鏈表線性鏈表 2.3.2 2.3.2 循環(huán)鏈表循環(huán)鏈表 2.3.3 2.3.3 雙向鏈表雙向鏈表 2.4 2.4 一元多項式的表示及相加一元多項式的表示及相加7線性表:線性表:由一組數(shù)據(jù)組成,線性表或者是一個空表,由一組數(shù)據(jù)組成,線性表或者是一個空表,或者可以寫成(或者可以寫成(a a1 1,a,a2 2,a ai
6、 i,a,an n),其中其中a ai i是取自某個是取自某個集合集合S S的元素。當?shù)脑?。?in1in時,數(shù)據(jù)元素時,數(shù)據(jù)元素a ai-1i-1稱為數(shù)據(jù)元素稱為數(shù)據(jù)元素a ai i的直接前驅(qū),而稱的直接前驅(qū),而稱a ai+1i+1為為a ai i的直接后繼。線性表中數(shù)的直接后繼。線性表中數(shù)據(jù)元素的個數(shù)稱為該線性表的長度。據(jù)元素的個數(shù)稱為該線性表的長度。2.1線性表的類型定義線性表的類型定義8(a1,a2,ai-1,ai,ai1,,an)1.線性表的定義:線性表的定義:用數(shù)據(jù)元素的有限序列表示用數(shù)據(jù)元素的有限序列表示n=0時稱為時稱為數(shù)據(jù)元素數(shù)據(jù)元素線性起點線性起點ai的直接前趨的直接前趨
7、ai的直接后繼的直接后繼下標,下標,是元素的是元素的序號,表示元素序號,表示元素在表中的位置在表中的位置n為元素總個為元素總個數(shù),即表長數(shù),即表長空表空表線性終點線性終點9形式化定義:形式化定義:Linearlist=(D,R)其中:其中:D0為某個數(shù)據(jù)對象的集合為某個數(shù)據(jù)對象的集合N為線性表長度為線性表長度10線性表的主要操作 初始化 求長度 取元素 定位 插入 刪除11對線性表可進行如下基本運算:對線性表可進行如下基本運算:InitList(&LInitList(&L):構(gòu)造一個空的線性表構(gòu)造一個空的線性表L L。ListLength(&LListLength(&L):返回返回L L數(shù)據(jù)元
8、素的個數(shù)。數(shù)據(jù)元素的個數(shù)。GetElem(L,i,&eGetElem(L,i,&e):用用e e返回返回L L中第中第i i個數(shù)據(jù)元素的值。個數(shù)據(jù)元素的值。ListInsert(&L,i,eListInsert(&L,i,e):在在L L中第中第i i個位置前插入新的數(shù)據(jù)元素個位置前插入新的數(shù)據(jù)元素e e,L L的長度加的長度加1 1。ListDelete(&L,i,&eListDelete(&L,i,&e):刪去刪去L L中第中第i i個元素,用個元素,用e e返回其值,返回其值,L L的長度減的長度減1 1。PriorElem(L,cur_e,&pre_ePriorElem(L,cur_e
9、,&pre_e):用用pre_epre_e返回數(shù)據(jù)元素返回數(shù)據(jù)元素cur_ecur_e的前驅(qū),如果存在的前驅(qū),如果存在的話。的話。NextElem(L,cur_e,&next_eNextElem(L,cur_e,&next_e):用用next_enext_e返回數(shù)據(jù)元素返回數(shù)據(jù)元素cur_ecur_e的后繼,如果存在的后繼,如果存在的話。的話。LocateElem(L,e,compareLocateElem(L,e,compare()():返回返回L L中第一個與中第一個與e e滿足關(guān)系滿足關(guān)系compare()compare()的數(shù)據(jù)元的數(shù)據(jù)元素的位序。素的位序。0 0表示這種元素不存在。表
10、示這種元素不存在。12例例1分析分析26個英文字母組成的英文表個英文字母組成的英文表(A,B,C,D,Z)學號學號姓名姓名性別性別年齡年齡班級班級2001011810205于春梅于春梅女女182001級電信級電信016班班2001011810260何仕鵬何仕鵬男男182001級電信級電信017班班2001011810284王王爽爽女女182001級通信級通信011班班2001011810360王亞武王亞武男男182001級通信級通信012班班:例例2分析學生情況登記表分析學生情況登記表數(shù)據(jù)元素都是記錄數(shù)據(jù)元素都是記錄;元素間關(guān)系是線性元素間關(guān)系是線性數(shù)據(jù)元素都是字母數(shù)據(jù)元素都是字母;元素間關(guān)系
11、是線性元素間關(guān)系是線性同一線性表中的元素必定具有相同特性同一線性表中的元素必定具有相同特性13例3、學生健康情況登記表如下:姓 名學 號性 別年齡 健康情況王小林790631 男 18 健康陳 紅790632 女 20 一般劉建平790633 男 21 健康張立立790634 男 17 神經(jīng)衰弱.14例4、一副撲克的點數(shù) (2,3,4,J,Q,K,A)15從以上例子可看出線性表的邏輯特征是:從以上例子可看出線性表的邏輯特征是:在非空的線性表,有且僅有一個開始結(jié)點在非空的線性表,有且僅有一個開始結(jié)點a a1 1,它它沒有直接前趨,而僅有一個直接后繼沒有直接前趨,而僅有一個直接后繼a a2 2;有
12、且僅有一個終端結(jié)點有且僅有一個終端結(jié)點a an n,它沒有直接后繼,而它沒有直接后繼,而僅有一個直接前趨僅有一個直接前趨a a n-1n-1;其余的內(nèi)部結(jié)點其余的內(nèi)部結(jié)點a ai i(2in-1)(2in-1)都有且僅有一個都有且僅有一個直接前趨直接前趨a a i-1i-1和一個直接后繼和一個直接后繼a a i+1i+1。16 線性表是一種典型的線性結(jié)構(gòu)。線性表是一種典型的線性結(jié)構(gòu)。數(shù)據(jù)的運算是定義在邏輯結(jié)構(gòu)上的,而運算數(shù)據(jù)的運算是定義在邏輯結(jié)構(gòu)上的,而運算的具體實現(xiàn)則是在存儲結(jié)構(gòu)上進行的。的具體實現(xiàn)則是在存儲結(jié)構(gòu)上進行的。抽象數(shù)據(jù)類型的定義為:抽象數(shù)據(jù)類型的定義為:P P191917 算法2
13、.1例2-1 利用兩個線性表LA和LB分別表示兩個集合A和B,現(xiàn)要求一個新的集合A=AB。void union(List&La,List Lb)La-len=ListLength(La);Lb-len=ListLength(Lb);for(I=1;I=Lb-len;I+)GetElem(Lb,I,e);if(!LocateElem(La,e,equal)ListInsert(La,+La-len,e)/for 18 算法2.2 p21例2-2 巳知線性表LA和線性表LB中的數(shù)據(jù)元素按值非遞減有序排列,現(xiàn)要求將LA和LB歸并為一個新的線性表LC,且LC中的元素仍按值非遞減有序排列。此問題的算法如
- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
30 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu):2 第2章線性表A 數(shù)據(jù)結(jié)構(gòu) 線性