




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
全國計算機(jī)等級考試
二級公共基礎(chǔ)知識
(2)1.程序設(shè)計基本概念1.1計算機(jī)工作原理通過工作原理了解,熟悉計算機(jī)內(nèi)部執(zhí)行功能的基本意義。為理解程序打下基礎(chǔ),特別理解計算機(jī)是機(jī)器。
1.2程序概念
什么是程序?
△指令的集合。(解釋指令)△通過硬件控制系統(tǒng)自動完成某一功能?!魍ㄟ^一系列代碼實現(xiàn)。
1.3程序怎樣執(zhí)行?怎樣編寫?
△計算機(jī)本身僅能識別二進(jìn)制代碼“0”、“1”?!骶幊套钪苯?、最低級的就是機(jī)器語言?!鳛榻鉀Q機(jī)器語言難理解、記憶等問題。出現(xiàn)符號語言?!鳛槭咕幊探咏匀徽Z言,出現(xiàn)高級語言。如C、PASCAL、FORTRAN2.基本數(shù)據(jù)結(jié)構(gòu)與算法2.1算法2.1.1算法(algorithm)基本概念對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。它是一組嚴(yán)謹(jǐn)?shù)囟x運算順序的規(guī)則,并且每一個規(guī)則都是有效的,且是明確的,此順序?qū)⒃谟邢薜拇螖?shù)下終止。算法具有有窮性、確定性、可行性、輸入和輸出(擁有足夠的情報)等5個重要特性。2.1.2算法的基本要素
1、對數(shù)據(jù)對象的運算和操作算術(shù)運算邏輯運算關(guān)系運算數(shù)據(jù)傳輸2、算法的控制結(jié)構(gòu)算法中各操作之間的執(zhí)行順序描述算法的工具通常有傳統(tǒng)流程圖、N-S結(jié)構(gòu)化流程圖、算法描述語言等一個算法一般可以用順序、選擇、循環(huán)三種基本機(jī)構(gòu)組合而成。2.1.3算法設(shè)計基本方法列舉法歸納法遞推遞歸(以簡潔的形式設(shè)計和描述算法)減半遞推技術(shù)回溯法2.2算法復(fù)雜度2.2.1時間復(fù)雜度依據(jù)算法算法編制的程序在計算機(jī)上運行時所消耗的時間來度量。通常有事后統(tǒng)計法和事前分析估算法。一個算法是由控制結(jié)構(gòu)(順序、分支和循環(huán))和原操作構(gòu)成的,算法時間取決于兩者的綜合效果。算法中基本操作重復(fù)執(zhí)行次數(shù)n和算法執(zhí)行時間同步增長,稱作算法的時間復(fù)雜度。2.2.2算法的空間復(fù)雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間一個上機(jī)執(zhí)行的程序除了需要存儲空間來寄存本身所用指令、常數(shù)、變量和輸入數(shù)據(jù)外,也需要一些對數(shù)據(jù)進(jìn)行操作的工作單元和存儲一些為實現(xiàn)計算所需信息的輔助空間。例題講解
算法的時間復(fù)雜度是指A)執(zhí)行算法程序所需要的時間B)算法程序的長度C)算法執(zhí)行過程中所需要的基本運算次數(shù)D)算法程序中的指令條數(shù)算法的基本特征是可行性、確定性、
【1】和擁有足夠的情報。算法的空間復(fù)雜度是指
A)算法程序的長度 B)算法程序中的指令條數(shù)
C)算法程序所占的存儲空間D)執(zhí)行過程中所需要的存儲空間在計算機(jī)中,算法是指
A)加工方法 B)解題方案的準(zhǔn)確而完整的描述
C)排序方法 D)查詢方法2.2數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的定義數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的圖形表示線性結(jié)構(gòu)與非線性結(jié)構(gòu)2.2.1數(shù)據(jù)結(jié)構(gòu)研究的主要內(nèi)容當(dāng)今計算機(jī)應(yīng)用的特點:所處理的數(shù)據(jù)量大且具有一定的關(guān)系;對其操作不再是單純的數(shù)值計算,而更多地是需要對其進(jìn)行組織、管理和檢索。應(yīng)用舉例1——學(xué)籍檔案管理假設(shè)一個學(xué)籍檔案管理系統(tǒng)應(yīng)包含如下表1-1所示的學(xué)生信息。特點:
l 每個學(xué)生的信息占據(jù)一行,所有學(xué)生的信息按學(xué)號順序依次排列構(gòu)成一張表格;
l 表中每個學(xué)生的信息依據(jù)學(xué)號的大小存在著一種前后關(guān)系,這就是我們所說的線性結(jié)構(gòu);
l 對它的操作通常是插入某個學(xué)生的信息,刪除某個學(xué)生的信息,更新某個學(xué)生的信息,按條件檢索某個學(xué)生的信息等等。應(yīng)用舉例2——輸出n個對象的全排列輸出n個對象的全排列可以使用下圖1-1所示的形式描述。圖1-13個對象的全排列過程特點:
l 在求解過程中,所處理的數(shù)據(jù)之間具有層次關(guān)系,這是我們所說的樹形結(jié)構(gòu);
l 對它的操作有:建立樹形結(jié)構(gòu),輸出最低層結(jié)點內(nèi)容等等。應(yīng)用舉例3——制定教學(xué)計劃在制定教學(xué)計劃時,需要考慮各門課程的開設(shè)順序。有些課程需要先導(dǎo)課程,有些課程則不需要,而有些課程又是其他課程的先導(dǎo)課程。比如,計算機(jī)專業(yè)課程的開設(shè)情況如下表1-2所示:課程先后關(guān)系的圖形描形式:c1c9c4c2c12c10c11c5c3c6c7c8圖1-2計算機(jī)專業(yè)必修課程開設(shè)先后關(guān)系特點
l 課程之間的先后關(guān)系用圖結(jié)構(gòu)描述;
l 通過實施創(chuàng)建圖結(jié)構(gòu),按要求將圖結(jié)構(gòu)中的頂點進(jìn)行線性排序。結(jié)論:數(shù)據(jù)結(jié)構(gòu)主要研究以下三個方面的問題:數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的存儲結(jié)構(gòu)對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運算
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學(xué)科。2.2.2基本概念和術(shù)語能輸入到計算機(jī)中并能被計算機(jī)程序處理的符號的集合。整數(shù)(1,2)、實數(shù)(1.1,1.2)字符串(Beijing)、圖形、聲音。2.2.2基本概念和術(shù)語
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學(xué)科。2.2.2基本概念和術(shù)語計算機(jī)管理圖書問題在圖書館里有各種卡片:有按書名編排的、有按作者編排的、有按分類編排如何將查詢圖書的這些信息存入計算機(jī)中既要考慮查詢時間短,又要考慮節(jié)省空間
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學(xué)科。最簡單的辦法之一是建立一張表,每一本書的信息在表中占一行,如2.2.2基本概念和術(shù)語
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學(xué)科。如何將0,1,2,3,4,5,6,7,8,9這10個數(shù)存放在計算機(jī)中能最快地達(dá)到你所需要的目的?目的不同,最佳的存儲方方法就不同。從大到小排列:9,8,7,6,5,4,3,2,1,0輸出偶數(shù):0,2,4,6,8,1,3,5,7,9數(shù)據(jù)元素在計算機(jī)中的表示
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學(xué)科。2.2.2基本概念和術(shù)語對數(shù)據(jù)結(jié)構(gòu)中的節(jié)點進(jìn)行操作處理(插入、刪除、修改、查找、排序)2.2.2基本概念和術(shù)語
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學(xué)科。數(shù)據(jù)元素(DataElement)
數(shù)據(jù)元素是數(shù)據(jù)的基本單位,即數(shù)據(jù)集合中的個體。有時一個數(shù)據(jù)元數(shù)可由若干數(shù)據(jù)項(DataItem)組成。數(shù)據(jù)項是數(shù)據(jù)的最小單位。數(shù)據(jù)元素亦稱節(jié)點或記錄。數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)有限個數(shù)據(jù)元素的集合有限個節(jié)點間關(guān)系的集合1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)2、數(shù)據(jù)的存儲結(jié)構(gòu)3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲B鏈?zhǔn)酱鎯€性表棧隊列樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)C索引存儲線性結(jié)構(gòu)
A,B,C,·······,X,Y,Z學(xué)生成績表86胡孝臣986110395劉忠賞9861107100張卓9861109成績姓名學(xué)號線性表——結(jié)點間是以線性關(guān)系聯(lián)結(jié)棧(stack):限定在一端進(jìn)行插入與刪除的線性表對列(queue):允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表樹形結(jié)構(gòu)全校學(xué)生檔案管理的組織方式計算機(jī)程序管理系統(tǒng)也是典型的樹形結(jié)構(gòu)ABCDEFGH樹形結(jié)構(gòu)——結(jié)點間具有分層次的連接關(guān)系HBCDEFGA1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)2、數(shù)據(jù)的存儲結(jié)構(gòu)3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲B鏈?zhǔn)酱鎯€性表棧隊樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面(亦稱物理結(jié)構(gòu))1423D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3)(3,4),(2,4)}213D={1,2,3}R={(1,2),(2,3),(3,2),(1,3)}
圖形結(jié)構(gòu)——節(jié)點間的連結(jié)是任意的1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)2、數(shù)據(jù)的存儲結(jié)構(gòu)3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲B鏈?zhǔn)酱鎯€性表棧隊樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面(亦稱物理結(jié)構(gòu))元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*mLo+(n-1)*m存儲地址存儲內(nèi)容Loc(a)=Lo+(i-1)*m順序存儲每個元素所占用的存儲單元個數(shù)元素n……..元素i……..元素2元素1存儲內(nèi)容順序存儲結(jié)構(gòu)常用于線性數(shù)據(jù)結(jié)構(gòu),將邏輯上相鄰的數(shù)據(jù)元素存儲在物理上相鄰的存儲單元里。順序存儲結(jié)構(gòu)的三個弱點:1.作插入或刪除操作時,需移動大量元數(shù)。2.長度變化較大時,需按最大空間分配。3.表的容量難以擴(kuò)充。1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)2、數(shù)據(jù)的存儲結(jié)構(gòu)3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲B鏈?zhǔn)酱鎯?/p>
線性表棧隊樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面(亦稱物理結(jié)構(gòu))1536元素21400元素11346元素3∧元素41345h
鏈?zhǔn)酱鎯γ總€節(jié)點都由兩部分組成:數(shù)據(jù)域和指針域。數(shù)據(jù)域存放元素本身的數(shù)據(jù),指針域存放指針。數(shù)據(jù)元素之間邏輯上的聯(lián)系由指針來體現(xiàn)。1536元素21400元素11346元素3∧元素4head1346
元素31536
…….
……..
…….1536
元素21400
…….
……..
…….∧
元素413461400
元素11345
指針
存儲內(nèi)容存儲地址
鏈?zhǔn)酱鎯?3451536元素21400元素11346元素3∧元素41345h
鏈?zhǔn)酱鎯?.比順序存儲結(jié)構(gòu)的存儲密度小
(每個節(jié)點都由數(shù)據(jù)域和指針愈組成)。2.邏輯上相鄰的節(jié)點物理上不必相鄰。3.插入、刪除靈活
(不必移動節(jié)點,只要改變節(jié)點中的指針)。鏈接存儲結(jié)構(gòu)特點:1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)2、數(shù)據(jù)的存儲結(jié)構(gòu)3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A順序存儲B鏈?zhǔn)酱鎯€性表棧隊樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面(亦稱物理結(jié)構(gòu))
線性結(jié)構(gòu)和非線性結(jié)構(gòu)如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件:有且只有一個根結(jié)點;每一個結(jié)點最多有一個前件,也最多有一個后件則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu)(線性表)。如果一個數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu),則稱之為非線性結(jié)構(gòu)。例題講解數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【1】
。數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的
A)存儲結(jié)構(gòu) B)物理結(jié)構(gòu)
C)邏輯結(jié)構(gòu) D)物理和存儲結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和【1】
兩大類。順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置
【2】的存儲單元中。數(shù)據(jù)處理的最小單位是
A)數(shù)據(jù) B)數(shù)據(jù)元素C)數(shù)據(jù)項 D)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運算,以及
A)數(shù)據(jù)的存儲結(jié)構(gòu) B)計算方法C)數(shù)據(jù)映象D)邏輯存儲根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分成
A)動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu) B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)
C)線性結(jié)構(gòu)和非線性結(jié)構(gòu)D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的
【3】以及對數(shù)據(jù)的操作運算。數(shù)據(jù)的基本單位是
【4】。下列敘述中,錯誤的是
A)數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率密切相關(guān)
B)數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率無關(guān)
C)數(shù)據(jù)的存儲結(jié)構(gòu)在計算機(jī)中所占的空間不一定是連續(xù)的
D)一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)數(shù)據(jù)的存儲結(jié)構(gòu)是指A)數(shù)據(jù)所占的存儲空間B)數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示C)數(shù)據(jù)在計算機(jī)中的順序存儲方式D)存儲在外存中的數(shù)據(jù)2.3線性表2.3.1線性表的定義線性表是n個元素的有限序列,它們之間的關(guān)系可以排成一個線性序列:
a1,a2,……,ai,……,an其中n稱作表的長度,當(dāng)n=0時,稱作空表。線性表的特點:1.線性表中所有元素的性質(zhì)相同。2.除第一個和最后一個數(shù)據(jù)元素之外,其它數(shù)據(jù)元素有且僅有一個前驅(qū)和一個后繼。第一個數(shù)據(jù)元素?zé)o前驅(qū),最后一個數(shù)據(jù)元素?zé)o后繼。3.數(shù)據(jù)元素在表中的位置只取決于它自身的序號。在線性表上常用的運算有:初始化、求長度、取元素、修改、插入、刪除、檢索、排序。2.3.2線性表的順序存儲結(jié)構(gòu)及其插入與刪除操作特點:
1、線性表中數(shù)據(jù)元素類型一致,只有數(shù)據(jù)域,存儲空間利用率高。
2、所有元素所占的存儲空間是連續(xù)的
3、各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的
2.做插入、刪除時需移動大量元素。
3.空間估計不明時,按最大空間分配?!?.a2a1an…..ai+1ai01i-1in-11-1插入運算ai-1…..a2a1alength…ai+1aixai-1…..a2a1
aiai+1…alength
alength……ai+1aix2.4棧和隊列2.4.1棧和隊列的定義
棧和隊列是兩種特殊的線性表,它們是運算時要受到某些限制的線性表,故也稱為限定性的數(shù)據(jù)結(jié)構(gòu)。2.4.1.1棧的定義棧:限定只能在表的一端進(jìn)行插入和刪除的特殊的線性表,此種結(jié)構(gòu)稱為后進(jìn)先出設(shè)棧s=(a1,a2,...,ai,...,an),其中a1是棧底元素,an是棧頂元素。棧頂(top):允許插入和刪除的一端;約定top始終指向新數(shù)據(jù)元素將存放的位置。棧底(bottom):不允許插入和刪除的一端。a1a2….an進(jìn)棧出棧棧頂棧底隊列的主要運算(1)設(shè)置一個空隊列;(2)插入一個新的隊尾元素,稱為進(jìn)隊;(3)刪除隊頭元素,稱為出隊;(4)讀取隊頭元素;2.4.1.2隊列的定義定義:一種特殊的線性結(jié)構(gòu),限定只能在表的一端進(jìn)行插入,在表的另一端進(jìn)行刪除的線性表。此種結(jié)構(gòu)稱為先進(jìn)先出(FIFO)表。a1,
a2,
a3,
a4,…………
an-1,
an
隊列示意圖隊頭隊尾2.4.2棧的順序存儲結(jié)構(gòu)及其基本運算a2a1a1a2top
用順序存儲結(jié)構(gòu)表示的棧。
順序棧用一組連續(xù)的存儲單元存放自棧底到棧頂?shù)臄?shù)據(jù)元素,一般用一維數(shù)組表示,設(shè)置一個簡單變量top指示棧頂位置,稱為棧頂指針,它始終指向待插入元素的位置?;具\算:壓(進(jìn))棧:PUSH出棧:POP
3210(a)rear=front=-1(隊空)e3e4(c)e1,e2出隊,e4入隊
隊滿rear=4fronte1e2e3
(b)rearfront(b)e1,e2,e3入隊隊空時,令rear=front=-1,當(dāng)有新元素入隊時,尾指針加1,當(dāng)有元素出隊時,頭指針加1。故在非空隊列中,頭指針始終指向隊頭元素前一個位置,而尾指針始終指向隊尾元素的位置2.4.3隊列的順序存儲結(jié)構(gòu)及其基本運算例題講解如果進(jìn)棧序列為e1,e2,e3,e4,則可能的出棧序列是
A)e3,e1,e4,e2 B)e2,e4,e3,e1C)e3,e4,e1,e2 D)任意順序棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A)ABCED B)DCBEAC)DBCEA D)CDABE
2.5鏈表線性單鏈表雙向鏈表循環(huán)鏈表結(jié)構(gòu)及其基本運算2.5.1線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)
將線性表的元素放到一個具有頭指針的鏈表中,鏈表中每個結(jié)點包含數(shù)據(jù)域和指針域。
數(shù)據(jù)域存放數(shù)據(jù),指針域存放后繼結(jié)點的地址,最后一個結(jié)點的指針域為空。邏輯上相鄰的數(shù)據(jù)元素在內(nèi)存中的物理存儲空間不一定相鄰。上圖的線性表為ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG線性鏈表表示法:鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點
插入、刪除靈活方便,不需要移動結(jié)點,只要改變結(jié)點中指針域的值即可。適合于線性表是動態(tài)變化的,不進(jìn)行頻繁查找操作、但經(jīng)常進(jìn)行插入刪除時使用。
鏈表的查找只能從頭指針開始順序查找。
babaxPP單鏈表的插入運算S在P所指向的結(jié)點之后插入新的結(jié)點2.5.2循環(huán)鏈表:
首尾相接的鏈表。將最后一個結(jié)點的空指針改為指向頭結(jié)點,從任一結(jié)點出發(fā)均可找到其它結(jié)點。a1a2an∧a3L…..帶頭結(jié)點的單鏈表a1a2ana3L…..循環(huán)單鏈表2.5.3雙向鏈表在每個結(jié)點中設(shè)置兩個指針,一個指向后繼,一個指向前驅(qū)??芍苯哟_定一個結(jié)點的前驅(qū)和后繼結(jié)點??商岣咝?。datanextbefore線性表的應(yīng)用:應(yīng)用最廣的數(shù)據(jù)結(jié)構(gòu)。·高級語言中的數(shù)組;·計算機(jī)的文件系統(tǒng);·計算機(jī)的目錄系統(tǒng);·電話號碼查詢系統(tǒng)(可采用順序表或單鏈表結(jié)構(gòu));·各種事務(wù)處理(各種表格均采用順序表和線性鏈表結(jié)構(gòu))2.6樹樹的基本概念二叉樹的定義及其存儲結(jié)構(gòu)二叉樹的前序、中序和后序遍歷2.6.1樹的定義由一個或多個結(jié)點組成的有限集合。僅有一個根結(jié)點,結(jié)點間有明顯的層次結(jié)構(gòu)關(guān)系。
A
C
GT2D
HIT3J
M
BEL
KT1F現(xiàn)實世界中,能用樹的結(jié)構(gòu)表示的例子:學(xué)校的行政關(guān)系、書的層次結(jié)構(gòu)、人類的家族血緣關(guān)系等。介紹幾個概念:結(jié)點(Node):樹中的元素,包含數(shù)據(jù)項及若干指向其子樹的分支。結(jié)點的度(Degree):結(jié)點擁有的子樹數(shù)。結(jié)點的層次:從根結(jié)點開始算起,根為第一層。葉子(Leaf):度為零的結(jié)點,也稱端結(jié)點。孩子(Child):結(jié)點子樹的根稱為該結(jié)點的孩子結(jié)點。兄弟(Sibling):同一雙親的孩子。雙親(Parent):孩子結(jié)點的上層結(jié)點,稱為這些結(jié)點的雙親。深度(Depth):樹中結(jié)點的最大層次數(shù)。森林(Forest):M棵互不相交的樹的集合。
A
C
GT2D
HIT3J
M
BEL
KT1F2.6.2二叉樹(BinaryTree)1、二叉樹的定義及其性質(zhì)
(1)二叉樹的定義二叉樹的五種基本形態(tài)二叉樹一種特殊的樹型結(jié)構(gòu),特點是樹中每個結(jié)點只有兩棵子樹,且子樹有左右之分,次序不能顛倒。
空二叉樹
僅有根結(jié)點
右子樹為空
左子樹為空左右子樹均非空因為樹的每個結(jié)點的度不同,存儲困難,使對樹的處理算法很復(fù)雜。所以引出二叉樹的討論。二叉樹是n(n0)個結(jié)點的有限集合。它或為空樹(n=0),或由一個根結(jié)點和兩棵分別稱為根的左子樹和右子樹的互不相交的二叉樹組成。
特別要注意:二叉樹不是樹的特殊情況。aabb兩棵不同的二叉樹A、
二叉樹的第i層上至多有2i-1(i1)個結(jié)點。(2)二叉樹的基本性質(zhì)423167891011121314155第三層上(i=3),有23-1=4個節(jié)點。第四層上(i=4),有24-1=8個節(jié)點。A、
二叉樹的第i層上至多有2i-1(i1)個結(jié)點。B、
深度為h的二叉樹中至多含有2h-1個結(jié)點。(2)二叉樹的基本性質(zhì)423167891011121314155此樹的深度h=4,共有24-1=15個節(jié)點。A、
二叉樹的第i層上至多有2i-1(i1)個結(jié)點。B、
深度為h的二叉樹中至多含有2h-1個結(jié)點。C、
若在任意一棵二叉樹中,有n0個葉子結(jié)點,有n2個度為2的結(jié)點,則:n0=n2+1(2)二叉樹的基本性質(zhì)423167891011121314155n0=8n2=7(3)滿二叉樹423167891011121314155特點:每一層上都含有最大結(jié)點數(shù)。423167891011125
非完全二叉樹(4)完全二叉樹423167891011125
完全二叉樹特點:除最后一層外,每一層都取最大結(jié)點數(shù),最后一層結(jié)點都集中在該層最左邊的若干位置。(5)樹與二叉樹的區(qū)別A.樹的結(jié)點個數(shù)至少為1,而二叉樹的結(jié)點個數(shù)可以為0。B.樹中結(jié)點的最大度數(shù)沒有限制,二叉樹結(jié)點最大度數(shù)為2。C.樹的結(jié)點無左、右之分,二叉樹的結(jié)點子樹有明確的左、右之分。
樹
二叉樹2、二叉樹的存儲結(jié)構(gòu)
(2)鏈?zhǔn)酱鎯Y(jié)構(gòu)T[16]若父結(jié)點在數(shù)組中i下標(biāo)處,其左孩子在2*i處,右孩子在2*i+1處。11ABcFED
●●●●●●●●●124
8
910563712131415(1)順序存儲結(jié)構(gòu)(1)順序存儲結(jié)構(gòu)2h-1=24-1=15用一組連續(xù)的存儲單元存放二叉樹的數(shù)據(jù)元素。結(jié)點在數(shù)組中的相對位置蘊含著結(jié)點之間的關(guān)系。0000FE000DC0BA15141312111098765432100一般二叉樹必須按完全二叉樹的形式存儲,將造成存儲的浪費。2.6.3二叉樹的遍歷查找某個結(jié)點,或?qū)Χ鏄渲腥拷Y(jié)點進(jìn)行某種處理,就需要遍歷。(1)遍歷定義及遍歷算法遍歷是指按某條搜索路線尋訪樹中每個結(jié)點,且每個結(jié)點只被訪問一次。按先左后右的原則,一般使用三種遍歷:先序遍歷(DLR):
訪問根結(jié)點,按先序遍歷左子樹,按先序遍歷右子樹。中序遍歷(LDR):
按中序遍歷左子樹,訪問根結(jié)點,按中序遍歷右子樹。后序遍歷(LRD):
按后序遍歷左子樹,按后序遍歷右子樹,訪問根結(jié)點。二叉樹為空時,執(zhí)行空操作,即空二叉樹已遍歷完。
(2)遍歷算法先序遍歷:DLR中序遍歷:LDR后序遍歷:LRDADBCT1T2T3DLRADLRDLR>B>>D>>CDLR以先序遍歷DLR為例演示遍歷過程ABDCBDACDBCA例題講解已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是
A)acbedB)decabC)deabc D)cedba
已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為
A)GEDHFBCA B)DGEBHFCAC)ABCDEFGH D)ACBFEDHG在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為
A)32 B)31C)16 D)15若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是
A)bdgcefhaB)gdbecfhaC)bdgaechf D)gdbehfca具有3個結(jié)點的二叉樹有
A)2種形態(tài)B)4種形態(tài)C)7種形態(tài)D)5種形態(tài)
設(shè)有下列二叉樹:
對此二叉樹前序遍歷的結(jié)果為A)ZBTTCPXA B)ATBZXCTPC)ZBTACTXPD)ATBZXCPT設(shè)一棵二叉樹中有3個葉子結(jié)點,有8個度為1的結(jié)點,則該二叉樹中總的結(jié)點數(shù)為
A)12 B)13C)14 D)15
設(shè)有下列二叉樹:對此二叉樹的中序遍歷的結(jié)果為A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA設(shè)一棵完全二叉樹共有700個結(jié)點,則該二叉樹中有()個葉子結(jié)點。
設(shè)一棵二叉樹的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為ABDECF,則后序遍歷結(jié)果為()。2.7查找和排序順序查找與二分查找算法基本排序算法(交換類排序、選擇類排序、插入類排序)2.7.1查找查找是在一個給定的數(shù)據(jù)結(jié)構(gòu)中,根據(jù)給定的條件查找滿足條件的結(jié)點。不同的數(shù)據(jù)結(jié)構(gòu)采用不同的查找方法。查找的效率直接影響數(shù)據(jù)處理的效率。查找的結(jié)果:查找成功:找到滿足條件的結(jié)點查找失?。赫也坏綕M足條件的結(jié)點。2.7.1.1順序查找(線性查找)查找過程:對給定的一關(guān)鍵字K,從線性表的一端開始,逐個進(jìn)行記錄的關(guān)鍵字和K的比較,直到找到關(guān)鍵字等于K的記錄或到達(dá)表的另一端。可以采用從前向后查,也可采用從后向前查的方法?!ぴ谄骄闆r下,大約要與表中一半以上元素進(jìn)行比較,效率較低。平均查找長度較大?!ぴ谙旅鎯煞N情況下只能采取順序查找:
a.線性表為無序表(元素排列是無序的);
b.即使是有序線性表,但采用的是鏈?zhǔn)酱鎯Y(jié)構(gòu)。2.7.1.2折半查找(二分法查找)思想:先確定待查找記錄所在的范圍,然后逐步縮小范圍,直到找到或確認(rèn)找不到該記錄為止。前提:必須在具有順序存儲結(jié)構(gòu)的有序表中進(jìn)行。分三種情況:1)若中間項的值等于x,則說明已查到。2)若x小于中間項的值,則在線性表的前半部分查找;3)若x大于中間項的值,則在線性表的后半部分查找。特點:比順序查找方法效率高。最壞的情況下,需要比較log2n次。2.7.2排序2.7.2.1概述1、排序的功能:將一個數(shù)據(jù)元素(或記錄)的任意序列,重新排成一個按關(guān)鍵字有序的序列。2、排序過程的組成步驟:首先比較兩個關(guān)鍵字的大??;然后將記錄從一個位置移動到另一個位置。排序方法插入排序選擇排序交換排序歸并排序直接插入排序折半插入排序簡單選擇排序堆排序起泡排序快速排序2.7.2.2插入排序
直接插入、折半插入1、直接插入排序:
基本思想:從數(shù)組的第2號元素開始,順序從數(shù)組中取出元素,并將該元素插入到其左端已排好序的數(shù)組的適當(dāng)位置上。需要n(n-1)/2次比較該算法適合于n較小的情況,時間復(fù)雜度為O(n2).待排元素序列:[53]2736156942第一次排序:[2753]36156942第二次排序:[273653]156942第三次排序:[15273653]6942第四次排序:[1527365369]42第五次排序:[152736425369]
直接插入排序示例對于有n個數(shù)據(jù)元素的待排序列,插入操作要進(jìn)行n-1次2、折半插入排序
折半插入排序在尋找插入位置時,不是逐個比較而是利用折半查找的原理尋找插入位置。待排序元素越多,改進(jìn)效果越明顯。折半插入排序的條件:在有序序列中插入一個關(guān)鍵字。例:有6個記錄,前5個已排序的基礎(chǔ)上,對第6個記錄排序。[1527365369]42
lowmidhigh
[1527365369]42
lowhigh
mid
[1527365369]42
highlow[152736425369](high<low,查找結(jié)束,插入位置為low或high+1)(42>36)(42<53)1、簡單選擇排序思想:首先從1~n個元素中選出關(guān)鍵字最小的記錄交換到第一個位置上。然后再從第2個到第n個元素中選出次小的記錄交換到第二個位置上,依次類推。時間復(fù)雜度為O(n2),最壞情況下需要比較
n(n-1)/2次適用于待排序元素較少的情況。2.7.2.3選擇排序
簡單選擇排序、堆排序初態(tài)83916839168391683916ijkijkijkijk1
3986互換ijk1
3986ikj1
3986ikj第一趟第二趟1
3986ikj第三趟
2
堆排序
也是一種選擇
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 筆譯服務(wù)合同(翻譯中心)-服務(wù)合同7篇
- 2025年龍巖貨運資格證考試真題
- 學(xué)校燈光改造工程合同
- 勞務(wù)派遣合同模本
- 工程分包合同總公司與分公司
- 英語基礎(chǔ)題試卷小學(xué)
- 小學(xué)課外英語試卷
- 配電控制設(shè)備市場分析及競爭策略分析報告
- 簡單的競標(biāo)合同范本
- 分包木工材料合同范本
- 《井中分布式光纖聲波傳感數(shù)據(jù)采集規(guī)程》標(biāo)準(zhǔn)報批稿
- 人音版 音樂 八年級下冊 第一單元 我和你教案
- 教育戲劇在小學(xué)教育中的應(yīng)用研究 論文
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 2024年青島港灣職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- python程序設(shè)計-說課
- 標(biāo)識標(biāo)牌制作及安裝項目技術(shù)方案
- 《糖尿病患者血脂管理中國專家共識(2024版)》解讀
- 醫(yī)療器械物價收費申請流程
- DB32T4124-2021廢水污染物自動監(jiān)測設(shè)備參數(shù)傳輸技術(shù)規(guī)范
- 保單服務(wù)專員技能提升培訓(xùn)結(jié)課考試附有答案
評論
0/150
提交評論