版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)重點(diǎn)歸納(適于清華嚴(yán)版教材)一、 數(shù)據(jù)結(jié)構(gòu)的章節(jié)結(jié)構(gòu)及重點(diǎn)構(gòu)成數(shù)據(jù)結(jié)構(gòu)學(xué)科的章節(jié)劃分基本上為:概論,線性表,棧和隊(duì)列,串,多維數(shù)組和廣義表,樹和二叉樹,圖,查找,內(nèi)排,外排,文件,動態(tài)存儲分配。對于絕大多數(shù)的學(xué)校而言,“外排,文件,動態(tài)存儲分配”三章基本上是不考的,在大多數(shù)高校的計(jì)算機(jī)本科教學(xué)過程中,這三章也是基本上不作講授的。所以,大家在這三章上可以不必花費(fèi)過多的精力,只要知道基本的概念即可。但是,對于報(bào)考名校特別是該校又有在試卷中對這三章進(jìn)行過考核的歷史,那么這部分朋友就要留意這三章了。按照以上我們給出的章節(jié)以及對后三章的介紹,數(shù)據(jù)結(jié)構(gòu)的章節(jié)比重大致為:概論:內(nèi)容很少,概念簡單
2、,分?jǐn)?shù)大多只有幾分,有的學(xué)校甚至不考。線性表:基礎(chǔ)章節(jié),必考內(nèi)容之一。考題多數(shù)為基本概念題,名??碱}中,鮮有大型算法設(shè)計(jì)題。如果有,也是與其它章節(jié)內(nèi)容相結(jié)合。棧和隊(duì)列:基礎(chǔ)章節(jié),容易出基本概念題,必考內(nèi)容之一。而棧常與其它章節(jié)配合考查,也常與遞歸等概念相聯(lián)系進(jìn)行考查。串 :基礎(chǔ)章節(jié),概念較為簡單。專門針對于此章的大型算法設(shè)計(jì)題很少,較常見的是根據(jù)kmp進(jìn)行算法分析。多維數(shù)組及廣義表 :基礎(chǔ)章節(jié),基于數(shù)組的算法題也是常見的,分?jǐn)?shù)比例波動較大,是出題的“可選單元”或“侯補(bǔ)單元”。一般如果要出題,多數(shù)不會作為大題出。數(shù)組常與“查找,排序”等章節(jié)結(jié)合來作為大題考查。樹和二叉樹 :重點(diǎn)難點(diǎn)章節(jié),各校必考
3、章節(jié)。各校在此章出題的不同之處在于,是否在本章中出一到兩道大的算法設(shè)計(jì)題。通過對多所學(xué)校的試卷分析,絕大多數(shù)學(xué)校在本章都曾有過出大型算法設(shè)計(jì)題的歷史。圖 :重點(diǎn)難點(diǎn)章節(jié),名校尤愛考。如果作為重點(diǎn)來考,則多出現(xiàn)于分析與設(shè)計(jì)題型當(dāng)中,可與樹一章共同構(gòu)成算法設(shè)計(jì)大題的題型設(shè)計(jì)。查找 :重點(diǎn)難點(diǎn)章節(jié),概念較多,聯(lián)系較為緊密,容易混淆。出題時可以作為分析型題目給出,在基本概念型題目中也較為常見。算法設(shè)計(jì)型題中可以數(shù)組結(jié)合來考查,也可以與樹一章結(jié)合來考查。排序 :與查找一章類似,本章同屬于重點(diǎn)難點(diǎn)章節(jié),且概念更多,聯(lián)系更為緊密,概念之間更容易混淆。在基本概念的考查中,尤愛考各種排序算法的優(yōu)劣比較此類的題。
4、算法設(shè)計(jì)大題中,如果作為出題,那么常與數(shù)組結(jié)合來考查。二、 數(shù)據(jù)結(jié)構(gòu)各章節(jié)重點(diǎn)勾劃:第0章概述本章主要起到總領(lǐng)作用,為讀者進(jìn)行數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)進(jìn)行了一些先期鋪墊。大家主要注意以下幾點(diǎn):數(shù)據(jù)結(jié)構(gòu)的基本概念,時間和空間復(fù)雜度的概念及度量方法,算法設(shè)計(jì)時的注意事項(xiàng)。本章考點(diǎn)不多,只要稍加注意理解即可。第一章線性表作為線性結(jié)構(gòu)的開篇章節(jié),線性表一章在線性結(jié)構(gòu)的學(xué)習(xí)乃至整個數(shù)據(jù)結(jié)構(gòu)學(xué)科的學(xué)習(xí)中,其作用都是不可低估的。在這一章,第一次系統(tǒng)性地引入鏈?zhǔn)酱鎯Φ母拍?,鏈?zhǔn)酱鎯Ω拍顚⑹钦麄€數(shù)據(jù)結(jié)構(gòu)學(xué)科的重中之重,無論哪一章都涉及到了這個概念??傮w來說,線性表一章可供考查的重要考點(diǎn)有以下幾個方面:1.線性表的相關(guān)基本
5、概念,如:前驅(qū)、后繼、表長、空表、首元結(jié)點(diǎn),頭結(jié)點(diǎn),頭指針等概念。2.線性表的結(jié)構(gòu)特點(diǎn),主要是指:除第一及最后一個元素外,每個結(jié)點(diǎn)都只有一個前趨和只有一個后繼。3.線性表的順序存儲方式及其在具體語言環(huán)境下的兩種不同實(shí)現(xiàn):表空間的靜態(tài)分配和動態(tài)分配。靜態(tài)鏈表與順序表的相似及不同之處。4.線性表的鏈?zhǔn)酱鎯Ψ绞郊耙韵聨追N常用鏈表的特點(diǎn)和運(yùn)算:單鏈表、循環(huán)鏈表,雙向鏈表,雙向循環(huán)鏈表。其中,單鏈表的歸并算法、循環(huán)鏈表的歸并算法、雙向鏈表及雙向循環(huán)鏈表的插入和刪除算法等都是較為常見的考查方式。此外,近年來在不少學(xué)校中還多次出現(xiàn)要求用遞歸算法實(shí)現(xiàn)單鏈表輸出(可能是順序也可能是倒序)的問題。在鏈表的小題型中
6、,經(jīng)??嫉揭恍┲T如:判表空的題。在不同的鏈表中,其判表空的方式是不一樣的,請大家注意。5.線性表的順序存儲及鏈?zhǔn)酱鎯η闆r下,其不同的優(yōu)缺點(diǎn)比較,即其各自適用的場合。單鏈表中設(shè)置頭指針、循環(huán)鏈表中設(shè)置尾指針而不設(shè)置頭指針以及索引存儲結(jié)構(gòu)的各自好處。第二章棧與隊(duì)列棧與隊(duì)列,是很多學(xué)習(xí)ds的同學(xué)遇到第一只攔路虎,很多人從這一章開始坐暈車,一直暈到現(xiàn)在。所以,理解棧與隊(duì)列,是走向ds高手的一條必由之路,。學(xué)習(xí)此章前,你可以問一下自己是不是已經(jīng)知道了以下幾點(diǎn):1.棧、隊(duì)列的定義及其相關(guān)數(shù)據(jù)結(jié)構(gòu)的概念,包括:順序棧,鏈棧,共享?xiàng)?,循環(huán)隊(duì)列,鏈隊(duì)等。棧與隊(duì)列存取數(shù)據(jù)(請注意包括:存和取兩部分)的特點(diǎn)。2.遞
7、歸算法。棧與遞歸的關(guān)系,以及借助棧將遞歸轉(zhuǎn)向于非遞歸的經(jīng)典算法:n!階乘問題,fib數(shù)列問題,hanoi問題,背包問題,二叉樹的遞歸和非遞歸遍歷問題,圖的深度遍歷與棧的關(guān)系等。其中,涉及到樹與圖的問題,多半會在樹與圖的相關(guān)章節(jié)中進(jìn)行考查。3.棧的應(yīng)用:數(shù)值表達(dá)式的求解,括號的配對等的原理,只作原理性了解,具體要求考查此為題目的算法設(shè)計(jì)題不多。4.循環(huán)隊(duì)列中判隊(duì)空、隊(duì)滿條件,循環(huán)隊(duì)列中入隊(duì)與出隊(duì)算法。如果你已經(jīng)對上面的幾點(diǎn)了如指掌,棧與隊(duì)列一章可以不看書了。注意,我說的是可以不看書,并不是可以不作題哦。第三章串經(jīng)歷了棧一章的痛苦煎熬后,終于迎來了串一章的柳暗花明。串,在概念上是比較少的一個章節(jié),
8、也是最容易自學(xué)的章節(jié)之一,但正如每個過來人所了解的,kmp算法是這一章的重要關(guān)隘,突破此關(guān)隘后,走過去又是一馬平川的大好ds山河了,呵呵。串一章需要攻破的主要堡壘有:1.串的基本概念,串與線性表的關(guān)系(串是其元素均為字符型數(shù)據(jù)的特殊線性表),空串與空格串的區(qū)別,串相等的條件2.串的基本操作,以及這些基本函數(shù)的使用,包括:取子串,串連接,串替換,求串長等等。運(yùn)用串的基本操作去完成特定的算法是很多學(xué)校在基本操作上的考查重點(diǎn)。3.順序串與鏈串及塊鏈串的區(qū)別和聯(lián)系,實(shí)現(xiàn)方式。4.kmp算法思想。kmp中next數(shù)組以及nextval數(shù)組的求法。明確傳統(tǒng)模式匹配算法的不足,明確next數(shù)組需要改進(jìn)之外。
9、其中,理解算法是核心,會求數(shù)組是得分點(diǎn)。不用我多說,這一節(jié)內(nèi)容是本章的重中之重??赡苓M(jìn)行的考查方式是:求next和nextval數(shù)組值,根據(jù)求得的next或nextval數(shù)組值給出運(yùn)用kmp算法進(jìn)行匹配的匹配過程。第四章數(shù)組與廣義表學(xué)過程序語言的朋友,數(shù)組的概念我們已經(jīng)不是第一次見到了,應(yīng)該已經(jīng)“一回生,二回熟”了,所以,在概念上,不會存在太大障礙。但作為考研課程來說,本章的考查重點(diǎn)可能與大學(xué)里的程序語言所關(guān)注的不太一樣,下面會作介紹。廣義表的概念,是數(shù)據(jù)結(jié)構(gòu)里第一次出現(xiàn)的。它是線性表或表元素的有限序列,構(gòu)成該結(jié)構(gòu)的每個子表或元素也是線性結(jié)構(gòu)的,所以,這一章也歸入線性結(jié)構(gòu)中。本章的考查重點(diǎn)有:
10、1.多維數(shù)組中某數(shù)組元素的position求解。一般是給出數(shù)組元素的首元素地址和每個元素占用的地址空間并組給出多維數(shù)組的維數(shù),然后要求你求出該數(shù)組中的某個元素所在的位置。2.明確按行存儲和按列存儲的區(qū)別和聯(lián)系,并能夠按照這兩種不同的存儲方式求解1中類型的題。3.將特殊矩陣中的元素按相應(yīng)的換算方式存入數(shù)組中。這些矩陣包括:對稱矩陣,三角矩陣,具有某種特點(diǎn)的稀疏矩陣等。熟悉稀疏矩陣的三種不同存儲方式:三元組,帶輔助行向量的二元組,十字鏈表存儲。掌握將稀疏矩陣的三元組或二元組向十字鏈表進(jìn)行轉(zhuǎn)換的算法。4.廣義表的概念,特別應(yīng)該明確表頭與表尾的定義。這一點(diǎn),是理解整個廣義表一節(jié)算法的基礎(chǔ)。近來,在一些
11、學(xué)校中,出現(xiàn)了這樣一種題目類型:給出對某個廣義表l若干個求了若干次的取頭和取尾操作后的串值,要求求出原廣義表l。大家要留意。5.與廣義表有關(guān)的遞歸算法。由于廣義表的定義就是遞歸的,所以,與廣義表有關(guān)的算法也常是遞歸形式的。比如:求表深度,復(fù)制廣義表等。這種題目,可以根據(jù)不同角度廣義表的表現(xiàn)形式運(yùn)用兩種不同的方式解答:一是把一個廣義表看作是表頭和表尾兩部分,分別對表頭和表尾進(jìn)行操作;二是把一個廣義表看作是若干個子表,分別對每個子表進(jìn)行操作。第五章樹與二叉樹從對線性結(jié)構(gòu)的研究過度到對樹形結(jié)構(gòu)的研究,是數(shù)據(jù)結(jié)構(gòu)課程學(xué)習(xí)的一次躍變,此次躍變完成的好壞,將直接關(guān)系到你到實(shí)際的考試中是否可以拿到高分,而這
12、所有的一切,將最終影響你的專業(yè)課總分。所以,樹這一章的重要性,已經(jīng)不說自明了??傮w來說,樹一章的知識點(diǎn)包括:二叉樹的概念、性質(zhì)和存儲結(jié)構(gòu),二叉樹遍歷的三種算法(遞歸與非遞歸),在三種基本遍歷算法的基礎(chǔ)上實(shí)現(xiàn)二叉樹的其它算法,線索二叉樹的概念和線索化算法以及線索化后的查找算法,最優(yōu)二叉樹的概念、構(gòu)成和應(yīng)用,樹的概念和存儲形式,樹與森林的遍歷算法及其與二叉樹遍歷算法的聯(lián)系,樹與森林和二叉樹的轉(zhuǎn)換。下面我們來看考試中對以上知識的主要考查方法:1.二叉樹的概念、性質(zhì)和存儲結(jié)構(gòu)考查方法可有:直接考查二叉樹的定義,讓你說明二叉樹與普通雙分支樹的區(qū)別;考查滿二叉樹和完全二叉樹的性質(zhì),普通二叉樹的五個性質(zhì):第
13、i層的最多結(jié)點(diǎn)數(shù),深度為k的二叉樹的最多結(jié)點(diǎn)數(shù),n0=n2+1的性質(zhì),n個結(jié)點(diǎn)的完全二叉樹的深度,順序存儲二叉樹時孩子結(jié)點(diǎn)與父結(jié)點(diǎn)之間的換算關(guān)系(左為:2*i,右為:2*i+1)。二叉樹的順序存儲和二叉鏈表存儲的各自優(yōu)缺點(diǎn)及適用場合,二叉樹的三叉鏈表表示方法。2.二叉樹的三種遍歷算法這一知識點(diǎn)掌握的好壞,將直接關(guān)系到樹一章的算法能否理解,進(jìn)而關(guān)系到樹一章的算法設(shè)計(jì)題能否順利完成。二叉樹的遍歷算法有三種:先序,中序和后序。其劃分的依據(jù)是視其每個算法中對根結(jié)點(diǎn)數(shù)據(jù)的訪問順序而定。不僅要熟練掌握三種遍歷的遞歸算法,理解其執(zhí)行的實(shí)際步驟,并且應(yīng)該熟練掌握三種遍歷的非遞歸算法。由于二叉樹一章的很多算法,
14、可以直接根據(jù)三種遞歸算法改造而來(比如:求葉子個數(shù)),所以,掌握了三種遍歷的非遞歸算法后,對付諸如:“利用非遞歸算法求二叉樹葉子個數(shù)”這樣的題目就下筆如有神了。我會在另一篇系列文章(3.可在三種遍歷算法的基礎(chǔ)上改造完成的其它二叉樹算法:求葉子個數(shù),求二叉樹結(jié)點(diǎn)總數(shù),求度為1或度為2的結(jié)點(diǎn)總數(shù),復(fù)制二叉樹,建立二叉樹,交換左右子樹,查找值為n的某個指定結(jié)點(diǎn),刪除值為n的某個指定結(jié)點(diǎn),諸如此類等等等等。如果你可以熟練掌握二叉樹的遞歸和非遞歸遍歷算法,那么解決以上問題就是小菜一碟了。4.線索二叉樹:線索二叉樹的引出,是為避免如二叉樹遍歷時的遞歸求解。眾所周知,遞歸雖然形式上比較好理解,但是消耗了大量
15、的內(nèi)存資源,如果遞歸層次一多,勢必帶來資源耗盡的危險(xiǎn),為了避免此類情況,線索二叉樹便堂而皇之地出現(xiàn)了。對于線索二叉樹,應(yīng)該掌握:線索化的實(shí)質(zhì),三種線索化的算法,線索化后二叉樹的遍歷算法,基本線索二叉樹的其它算法問題(如:查找某一類線索二叉樹中指定結(jié)點(diǎn)的前驅(qū)或后繼結(jié)點(diǎn)就是一類??碱})。5.最優(yōu)二叉樹(哈夫曼樹):最優(yōu)二叉樹是為了解決特定問題引出的特殊二叉樹結(jié)構(gòu),它的前提是給二叉樹的每條邊賦予了權(quán)值,這樣形成的二叉樹按權(quán)相加之和是最小的。最優(yōu)二叉樹一節(jié),直接考查算法源碼的很少,一般是給你一組數(shù)據(jù),要求你建立基于這組數(shù)據(jù)的最優(yōu)二叉樹,并求出其最小權(quán)值之和,此類題目不難,屬送分題。6.樹與森林:二叉樹
16、是一種特殊的樹,這種特殊不僅僅在于其分支最多為2以及其它特征,一個最重要的特殊之處是在于:二叉樹是有序的!即:二叉樹的左右孩子是不可交換的,如果交換了就成了另外一棵二叉樹,這樣交換之后的二叉樹與原二叉樹我們認(rèn)為是不相同的兩棵二叉樹。但是,對于普通的雙分支樹而言,不具有這種性質(zhì)。樹與森林的遍歷,不像二叉樹那樣豐富,他們只有兩種遍歷算法:先根與后根(對于森林而言稱作:先序與后序遍歷)。在難度比較大的考試中,也有基于此二種算法的基礎(chǔ)上再進(jìn)行擴(kuò)展要求你利用這兩種算法設(shè)計(jì)其它算法的,但一般院校很少有這種考法,最多只是要求你根據(jù)先根或后根寫出他們的遍歷序列。此二者的先根與后根遍歷與二叉樹中的遍歷算法是有對
17、應(yīng)關(guān)系的:先根遍歷對應(yīng)二叉樹的先序遍歷,而后根遍歷對應(yīng)二叉樹的中序遍歷。這一點(diǎn)成為很多學(xué)校的考點(diǎn),考查的方式不一而足,有的直接考此句話,有的是先讓你求解遍歷序列然后回答這個問題。二叉樹、樹與森林之所以能有以上的對應(yīng)關(guān)系,全拜二叉鏈表所賜。二叉樹使用二叉鏈表分別存放他的左右孩子,樹利用二叉鏈表存儲孩子及兄弟(稱孩子兄弟鏈表),而森林也是利用二叉鏈表存儲孩子及兄弟。樹一章,處處是重點(diǎn),道道是考題,大家務(wù)必個個過關(guān)。第六章圖如果說,從線性結(jié)構(gòu)向樹形結(jié)構(gòu)研究的轉(zhuǎn)變,是數(shù)據(jù)結(jié)構(gòu)學(xué)科對數(shù)據(jù)組織形式研究的一次升華,那么從樹形結(jié)構(gòu)的研究轉(zhuǎn)到圖形結(jié)構(gòu)的研究,則進(jìn)一步讓我們看到了數(shù)據(jù)結(jié)構(gòu)對于解決實(shí)際問題的重大推動
18、作用。圖這一章的特點(diǎn)是:概念繁多,與離散數(shù)學(xué)中圖的概念聯(lián)系緊密,算法復(fù)雜,極易被考到,且容易出大題,尤其是名校,作為考研課程,如果不考查樹與圖兩章的知識,幾乎是不可想像的。下面我們看一下圖這一章的主要考點(diǎn)以及這些考點(diǎn)的考查方式:1.考查有關(guān)圖的基本概念問題:這些概念是進(jìn)行圖一章學(xué)習(xí)的基礎(chǔ),這一章的概念包括:圖的定義和特點(diǎn),無向圖,有向圖,入度,出度,完全圖,生成子圖,路徑長度,回路,(強(qiáng))連通圖,(強(qiáng))連通分量等概念。與這些概念相聯(lián)系的相關(guān)計(jì)算題也應(yīng)該掌握。2.考查圖的幾種存儲形式:圖的存儲形式包括:鄰接矩陣,(逆)鄰接表,十字鏈表及鄰接多重表。在考查時,有的學(xué)校是給出一種存儲形式,要求考生用
19、算法或手寫出與給定的結(jié)構(gòu)相對應(yīng)的該圖的另一種存儲形式。3.考查圖的兩種遍歷算法:深度遍歷和廣度遍歷深度遍歷和廣度遍歷是圖的兩種基本的遍歷算法,這兩個算法對圖一章的重要性等同于“先序、中序、后序遍歷”對于二叉樹一章的重要性。在考查時,圖一章的算法設(shè)計(jì)題常常是基于這兩種基本的遍歷算法而設(shè)計(jì)的,比如:“求最長的最短路徑問題”和“判斷兩頂點(diǎn)間是否存在長為k的簡單路徑問題”,就分別用到了廣度遍歷和深度遍歷算法。4.生成樹、最小生成樹的概念以及最小生成樹的構(gòu)造:prim算法和kruskal算法??疾闀r,一般不要求寫出算法源碼,而是要求根據(jù)這兩種最小生成樹的算法思想寫出其構(gòu)造過程及最終生成的最小生成樹。5.
20、拓?fù)渑判騿栴}:拓?fù)渑判蛴袃煞N方法,一是無前趨的頂點(diǎn)優(yōu)先算法,二是無后繼的頂點(diǎn)優(yōu)先算法。換句話說,一種是“從前向后”的排序,一種是“從后向前”排。當(dāng)然,后一種排序出來的結(jié)果是“逆拓?fù)溆行颉钡摹?.關(guān)鍵路徑問題:這個問題是圖一章的難點(diǎn)問題。理解關(guān)鍵路徑的關(guān)鍵有三個方面:一是何謂關(guān)鍵路徑,二是最早時間是什么意思、如何求,三是最晚時間是什么意思、如何求。簡單地說,最早時間是通過“從前向后”的方法求的,而最晚時間是通過“從后向前”的方法求解的,并且,要想求最晚時間必須是在所有的最早時間都已經(jīng)求出來之后才能進(jìn)行。這個問題拿來直接考算法源碼的不多,一般是要求按照書上的算法描述求解的過程和步驟。在實(shí)際設(shè)計(jì)關(guān)鍵
21、路徑的算法時,還應(yīng)該注意以下這一點(diǎn):采用鄰接表的存儲結(jié)構(gòu),求最早時間和最晚時間要采用不同的處理方法,即:在算法初始時,應(yīng)該首先將所有頂點(diǎn)的最早時間全部置為0。關(guān)鍵路徑問題是工程進(jìn)度控制的重要方法,具有很強(qiáng)的實(shí)用性。7.最短路徑問題:與關(guān)鍵路徑問題并稱為圖一章的兩只攔路虎。概念理解是比較容易的,關(guān)鍵是算法的理解。最短路徑問題分為兩種:一是求從某一點(diǎn)出發(fā)到其余各點(diǎn)的最短路徑;二是求圖中每一對頂點(diǎn)之間的最短路徑。這個問題也具有非常實(shí)用的背景特色,一個典型的應(yīng)該就是旅游景點(diǎn)及旅游路線的選擇問題。解決第一個問題用dijsktra算法,解決第二個問題用floyd算法。注意區(qū)分。第七章查找在不少數(shù)據(jù)結(jié)構(gòu)的教
22、材中,是把查找與排序放入高級數(shù)據(jù)結(jié)構(gòu)中的。應(yīng)該說,查找和排序兩章是前面我們所學(xué)的知識的綜合運(yùn)用,用到了樹、也用到了鏈表等知識,對這些數(shù)據(jù)結(jié)構(gòu)某一方面的運(yùn)用就構(gòu)成了查找和排序?,F(xiàn)實(shí)生活中,search幾乎無處不在,特別是現(xiàn)在的網(wǎng)絡(luò)時代,萬事離不開search,小到文檔內(nèi)文字的搜索,大到internet上的搜索,search占據(jù)了我們上網(wǎng)的大部分時間。在復(fù)習(xí)這一章的知識時,你需要先弄清楚以下幾個概念:關(guān)鍵字、主關(guān)鍵字、次關(guān)鍵字的含義;靜態(tài)查找與動態(tài)查找的含義及區(qū)別;平均查找長度asl的概念及在各種查找算法中的計(jì)算方法和計(jì)算結(jié)果,特別是一些典型結(jié)構(gòu)的asl值,應(yīng)該記住。在ds的教材中,一般將sear
23、ch分為三類:1st,在順序表上的查找;2nd,在樹表上的查找;3rd,在哈希表上的查找。下面詳細(xì)介紹其考查知識點(diǎn)及考查方式:1.線性表上的查找:主要分為三種線性結(jié)構(gòu):順序表,有序順序表,索引順序表。對于第一種,我們采用傳統(tǒng)查找方法,逐個比較。對于及有序順序表我們采用二分查找法。對于第三種索引結(jié)構(gòu),我們采用索引查找算法??忌枰⒁膺@三種表下的asl值以及三種算法的實(shí)現(xiàn)。其中,二分查找還要特別注意適用條件以及其遞歸實(shí)現(xiàn)方法。2.樹表上的查找:這是本章的重點(diǎn)和難點(diǎn)。由于這一節(jié)介紹的內(nèi)容是使用樹表進(jìn)行的查找,所以很容易與樹一間的某些概念相混淆。本節(jié)內(nèi)容與樹一章的內(nèi)容有聯(lián)系,但也有很多不同,應(yīng)注意規(guī)
24、納。樹表主要分為以下幾種:二叉排序樹,平衡二叉樹,b樹,鍵樹。其中,尤以前兩種結(jié)構(gòu)為重,也有部分名校偏愛考b樹的。由于二叉排序樹與平衡二叉樹是一種特殊的二叉樹,所以與二叉樹的聯(lián)系就更為緊密,二叉樹一章學(xué)好了,這里也就不難了。二叉排序樹,簡言之,就是“左小右大”,它的中序遍歷結(jié)果是一個遞增的有序序列。平衡二叉樹是二叉排序樹的優(yōu)化,其本質(zhì)也是一種二叉排序樹,只不過,平衡二叉樹對左右子樹的深度有了限定:深度之差的絕對值不得大于1。對于二叉排序樹,“判斷某棵二叉樹是否二叉排序樹”這一算法經(jīng)常被考到,可用遞歸,也可以用非遞歸。平衡二叉樹的建立也是一個??键c(diǎn),但該知識點(diǎn)歸根結(jié)底還是關(guān)注的平衡二叉樹的四種調(diào)
25、整算法,所以應(yīng)該掌握平衡二叉樹的四種調(diào)整算法,調(diào)整的一個參照是:調(diào)整前后的中序遍歷結(jié)果相同。b樹是二叉排序樹的進(jìn)一步改進(jìn),也可以把b樹理解為三叉、四叉.排序樹。除b樹的查找算法外,應(yīng)該特別注意一下b樹的插入和刪除算法。因?yàn)檫@兩種算法涉及到b樹結(jié)點(diǎn)的分裂和合并,是一個難點(diǎn)。b樹是報(bào)考名校的同學(xué)應(yīng)該關(guān)注的焦點(diǎn)之一。鍵樹也稱字符樹,特別適用于查找英文單詞的場合。一般不要求能完整描述算法源碼,多是根據(jù)算法思想建立鍵樹及描述其大致查找過程。3.基本哈希表的查找算法:哈希一詞,是外來詞,譯自“hash”一詞,意為:散列或雜湊的意思。哈希表查找的基本思想是:根據(jù)當(dāng)前待查找數(shù)據(jù)的特征,以記錄關(guān)鍵字為自變量,設(shè)
26、計(jì)一個function,該函數(shù)對關(guān)鍵字進(jìn)行轉(zhuǎn)換后,其解釋結(jié)果為待查的地址?;诠1淼目疾辄c(diǎn)有:哈希函數(shù)的設(shè)計(jì),沖突解決方法的選擇及沖突處理過程的描述。第八章內(nèi)部排序內(nèi)排是ds課程中最后一個重要的章節(jié),建立在此章之上的考題可以有多種類型:填空,選擇,判斷乃至大型算法題。但是,歸結(jié)到一點(diǎn),就是考查你對書本上的各種排序算法及其思想以及其優(yōu)缺點(diǎn)和性能指標(biāo)(時間復(fù)雜度)能否了如指掌。這一章,我們對重點(diǎn)的規(guī)納將跟以上各章不同。我們將從以下幾個側(cè)面來對排序一章進(jìn)行不同的規(guī)納,以期能更全面的理解排序一章的總體結(jié)構(gòu)及各種算法。從排序算法的種類來分,本章主要闡述了以下幾種排序方法:插入、選擇、交換、歸并、計(jì)數(shù)等
27、五種排序方法。其中,在插入排序中又可分為:直接插入、折半插入、2路插入、希爾排序。這幾種插入排序算法的最根本的不同點(diǎn),說到底就是根據(jù)什么規(guī)則尋找新元素的插入點(diǎn)。直接插入是依次尋找,折半插入是折半尋找。希爾排序,是通過控制每次參與排序的數(shù)的總范圍“由小到大”的增量來實(shí)現(xiàn)排序效率提高的目的。交換排序,又稱冒泡排序,在交換排序的基礎(chǔ)上改進(jìn)又可以得到快速排序??焖倥判虻乃枷耄徽Z以敝之:用中間數(shù)將待排數(shù)據(jù)組一分為二??焖倥判颍谔幚淼摹皢栴}規(guī)?!边@個概念上,與希爾有點(diǎn)相反,快速排序,是先處理一個較大規(guī)模,然后逐漸把處理的規(guī)模降低,最終達(dá)到排序的目的。選擇排序,相對于前面幾種排序算法來說,難度大一點(diǎn)。具
28、體來說,它可以分為:簡單選擇、樹選擇、堆排。這三種方法的不同點(diǎn)是,根據(jù)什么規(guī)則選取最小的數(shù)。簡單選擇,是通過簡單的數(shù)組遍歷方案確定最小數(shù);樹選擇,是通過“錦標(biāo)賽”類似的思想,讓兩數(shù)相比,不斷淘汰較大(小)者,最終選出最小(大)數(shù);而堆排序,是利用堆這種數(shù)據(jù)結(jié)構(gòu)的性質(zhì),通過堆元素的刪除、調(diào)整等一系列操作將最小數(shù)選出放在堆頂。堆排序中的堆建立、堆調(diào)整是重要考點(diǎn)。樹選擇排序,也曾經(jīng)在一些學(xué)校中的大型算法題中出現(xiàn),請大家注意。歸并排序,故名思義,是通過“歸并”這種操作完成排序的目的,既然是歸并就必須是兩者以上的數(shù)據(jù)集合才可能實(shí)現(xiàn)歸并。所以,在歸并排序中,關(guān)注最多的就是2路歸并。算法思想比較簡單,有一點(diǎn)
29、,要銘記在心:歸并排序是穩(wěn)定排序?;鶖?shù)排序,是一種很特別的排序方法,也正是由于它的特殊,所以,基數(shù)排序就比較適合于一些特別的場合,比如撲克牌排序問題等?;鶖?shù)排序,又分為兩種:多關(guān)鍵字的排序(撲克牌排序),鏈?zhǔn)脚判颍ㄕ麛?shù)排序)?;鶖?shù)排序的核心思想也是利用“基數(shù)空間”這個概念將問題規(guī)模規(guī)范、變小,并且,在排序的過程中,只要按照基排的思想,是不用進(jìn)行關(guān)鍵字比較的,這樣得出的最終序列就是一個有序序列。本章各種排序算法的思想以及偽代碼實(shí)現(xiàn),及其時間復(fù)雜度都是必須掌握的,學(xué)習(xí)時要多注意規(guī)納、總結(jié)、對比。此外,對于教材中的10.7節(jié),要求必須熟記,在理解的基礎(chǔ)上記憶,這一節(jié)幾乎成為很多學(xué)校每年的必考點(diǎn)。二叉
30、樹三種遍歷的非遞歸算法(背誦版)本貼給出二叉樹先序、中序、后序三種遍歷的非遞歸算法,此三個算法可視為標(biāo)準(zhǔn)算法,直接用于考研答題。1.先序遍歷非遞歸算法#define maxsize 100typedef struct bitree elemmaxsize; int top;sqstack;void preorderunrec(bitree t) sqstack s; stackinit(s); p=t; whil
31、e (p!=null | !stackempty(s) while (p!=null) /遍歷左子樹 visite(p->data);
32、; push(s,p); p=p->lchild; /endwhile if (!stackempty(s) /通
33、過下一次循環(huán)中的內(nèi)嵌while實(shí)現(xiàn)右子樹遍歷 p=pop(s); p=p->rchild; /endif
34、0; /endwhile /preorderunrec2.中序遍歷非遞歸算法#define maxsize 100typedef struct bitree elemmaxsize; int top;sqstack;void inorderunrec(bitree t) sqstack s; stackinit(s); p=t;
35、160; while (p!=null | !stackempty(s) while (p!=null) /遍歷左子樹 push(s,p);
36、; p=p->lchild; /endwhile if (!stackempty(s) p=pop(s);
37、; visite(p->data); /訪問根結(jié)點(diǎn) p=p->rchild; /通過下一次循環(huán)實(shí)現(xiàn)右子樹遍歷 /endif
38、0; /endwhile/inorderunrec3.后序遍歷非遞歸算法#define maxsize 100typedef enuml,r tagtype;typedef struct bitree ptr; tagtype tag;stacknode;typedef struct stacknode elemmaxsize; int top;sqstack;void postorderunrec(bitree t) sqstack s;
39、; stacknode x; stackinit(s); p=t; do while (p!=null) /遍歷左子樹 x.ptr = p
40、; x.tag = l; /標(biāo)記為左子樹 push(s,x); p=p->lchild;
41、160; while (!stackempty(s) && s.elems.top.tag=r) x = pop(s); p = x.ptr;
42、 visite(p->data); /tag為r,表示右子樹訪問完畢,故訪問根結(jié)點(diǎn) if (!stackempty(s)
43、160; s.elems.top.tag =r; /遍歷右子樹 p=s.elems.top.ptr->rchild; while (!stackempty(s);/postorderunrec 重慶大學(xué)2000一、填空1、 一個連通圖的_ 是一個極小連通子圖。2、 在aoe網(wǎng)中,從源點(diǎn)到匯點(diǎn)路徑上各活動時間總和最長的路徑稱為_。3、 _法構(gòu)造的哈希函數(shù)肯定不會發(fā)生沖突。4、 設(shè)正文串長度為n,模式串長度為m,則串匹配的kmp算法的時間復(fù)雜度為_。5、 廣義表的_ 定義為廣義表中括弧的重?cái)?shù)據(jù)。6、 _ 排序不需要進(jìn)行記錄關(guān)鍵字間的比較。7、 _又稱
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生態(tài)公園車位租賃與休閑娛樂服務(wù)協(xié)議4篇
- 2025年度藝術(shù)品代理合同終止及展覽策劃協(xié)議4篇
- 二零二五版跨行業(yè)企業(yè)戰(zhàn)略合作保密及數(shù)據(jù)共享協(xié)議3篇
- 離婚2025年度子女監(jiān)護(hù)權(quán)變更合同3篇
- 2025年農(nóng)業(yè)大棚租賃與農(nóng)產(chǎn)品質(zhì)量安全檢測服務(wù)協(xié)議4篇
- 2025年度園林景觀蟲害防治與植物保護(hù)合同4篇
- 家庭中醫(yī)急救技能普及工作匯報(bào)
- 現(xiàn)代家庭教育的新篇章-從理論到操作的全面解讀與實(shí)踐探索
- 探索創(chuàng)新型康復(fù)治療在醫(yī)療教育中的價(jià)值
- 科技小能手的培養(yǎng)計(jì)劃觀察與思考的融合
- 三級人工智能訓(xùn)練師(高級)職業(yè)技能等級認(rèn)定考試題及答案
- 華為全屋智能試題
- 第三單元名著導(dǎo)讀《經(jīng)典常談》知識清單 統(tǒng)編版語文八年級下冊
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報(bào)告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財(cái)務(wù)分析報(bào)告
- 無違法犯罪記錄證明申請表(個人)
- 大學(xué)生勞動教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
評論
0/150
提交評論