中法《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)指導(dǎo)書_第1頁(yè)
中法《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)指導(dǎo)書_第2頁(yè)
中法《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)指導(dǎo)書_第3頁(yè)
中法《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)指導(dǎo)書_第4頁(yè)
中法《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)指導(dǎo)書_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書一、實(shí)驗(yàn)?zāi)康摹稊?shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)專業(yè)一門重要的專業(yè)技術(shù)基礎(chǔ)課程,是計(jì)算機(jī)專業(yè)的一門核心的關(guān)鍵性課程。本課程較系統(tǒng)地介紹了軟件設(shè)計(jì)中常用的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的存儲(chǔ)結(jié)構(gòu)和實(shí)現(xiàn)算法,介紹了常用的多種查找和排序技術(shù),并做了性能分析和比較,內(nèi)容非常豐富。本課程的學(xué)習(xí)將為后續(xù)課程的學(xué)習(xí)以及軟件設(shè)計(jì)水平的提高打下良好的基礎(chǔ)。

由于以下原因,使得掌握這門課程具有較大的難度:

(1)內(nèi)容豐富,學(xué)習(xí)量大,給學(xué)習(xí)帶來(lái)困難;

(2)所用到的技術(shù)多,而在此之前的各門課程中所介紹的專業(yè)性知識(shí)又不多,因而加大了學(xué)習(xí)難度;

(3)隱含在各部分的技術(shù)和方法豐富,也是學(xué)習(xí)的重點(diǎn)和難點(diǎn)。

根據(jù)《數(shù)據(jù)結(jié)構(gòu)》課程本身的技術(shù)特性,設(shè)置《數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)》實(shí)踐環(huán)節(jié)十分重要。通過(guò)實(shí)驗(yàn)實(shí)踐內(nèi)容的訓(xùn)練,突出構(gòu)造性思維訓(xùn)練的特征,目的是提高學(xué)生組織數(shù)據(jù)及編寫大型程序的能力。課程上機(jī)實(shí)驗(yàn)的目的,不僅僅是驗(yàn)證教材和講課的內(nèi)容,檢查自己所編的程序是否正確,課程安排的上機(jī)實(shí)驗(yàn)的目的可以概括為如下幾個(gè)方面:1、加深對(duì)課堂講授內(nèi)容的理解實(shí)驗(yàn)是對(duì)學(xué)生的一種全面綜合訓(xùn)練。是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。通常,實(shí)驗(yàn)題中的問(wèn)題比平時(shí)的習(xí)題復(fù)雜得多,也更接近實(shí)際。實(shí)驗(yàn)著眼于原理與應(yīng)用的結(jié)合點(diǎn),使學(xué)生學(xué)會(huì)如何把書上學(xué)到的知識(shí)用于解決實(shí)際問(wèn)題,培養(yǎng)軟件工作所需要的動(dòng)手能力;另一方面,能使書上的知識(shí)變"活",起到深化理解和靈活掌握教學(xué)內(nèi)容的目的。不少學(xué)生在解答習(xí)題尤其是算法設(shè)計(jì)題時(shí),覺得無(wú)從下手,做起來(lái)特別費(fèi)勁。實(shí)驗(yàn)中的內(nèi)容和教科書的內(nèi)容是密切相關(guān)的,解決題目要求所需的各種技術(shù)大多可從教科書中找到,只不過(guò)其出現(xiàn)的形式呈多樣化,因此需要仔細(xì)體會(huì),在反復(fù)實(shí)踐的過(guò)程中才能掌握。2、培養(yǎng)學(xué)生軟件設(shè)計(jì)的綜合能力平時(shí)的練習(xí)較偏重于如何編寫功能單一的"小"算法,而實(shí)驗(yàn)題是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問(wèn)題分析、總體結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、程序設(shè)計(jì)基本技能和技巧,多人合作,以至一整套軟件工作規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。此外,還有很重要的一點(diǎn)是:機(jī)器是比任何教師都嚴(yán)厲的檢查者。

通過(guò)實(shí)驗(yàn)使學(xué)生不僅能夠深化理解教學(xué)內(nèi)容,進(jìn)一步提高靈活運(yùn)用數(shù)據(jù)結(jié)構(gòu)、算法和程序設(shè)計(jì)技術(shù)的能力,而且可以在需求分析、總體結(jié)構(gòu)設(shè)計(jì)、算法設(shè)計(jì)、程序設(shè)計(jì)、上機(jī)操作及程序調(diào)試等基本技能方面受到綜合訓(xùn)練。實(shí)驗(yàn)著眼于原理與應(yīng)用的結(jié)合點(diǎn),使學(xué)生學(xué)會(huì)如何把書本上和課堂上學(xué)到的知識(shí)用于解決實(shí)際問(wèn)題,從而培養(yǎng)計(jì)算機(jī)軟件工作所需要的動(dòng)手能力。3、熟悉程序開發(fā)環(huán)境,學(xué)習(xí)上機(jī)調(diào)試程序

一個(gè)程序從編輯,編譯,連接到運(yùn)行,都要在一定的外部操作環(huán)境下才能進(jìn)行。所謂"環(huán)境"就是所用的計(jì)算機(jī)系統(tǒng)硬件,軟件條件,只有學(xué)會(huì)使用這些環(huán)境,才能進(jìn)行程序開發(fā)工作。通過(guò)上機(jī)實(shí)驗(yàn),熟練地掌握程序的開發(fā)環(huán)境,為以后真正編寫計(jì)算機(jī)程序解決實(shí)際問(wèn)題打下基礎(chǔ)。同時(shí),在今后遇到其它開發(fā)環(huán)境時(shí)就會(huì)觸類旁通,很快掌握新系統(tǒng)的使用。

完成程序的編寫,決不意味著萬(wàn)事大吉。你認(rèn)為萬(wàn)無(wú)一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)可能不斷出現(xiàn)麻煩。如編譯程序檢測(cè)出一大堆語(yǔ)法錯(cuò)誤。有時(shí)程序本身不存在語(yǔ)法錯(cuò)誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯(cuò)誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無(wú)法發(fā)現(xiàn)這種程序邏輯錯(cuò)誤,只能靠自己的上機(jī)經(jīng)驗(yàn)分析判斷錯(cuò)誤所在。程序的調(diào)試是一個(gè)技巧性很強(qiáng)的工作,盡快掌握程序調(diào)試方法是非常重要的。分析問(wèn)題,選擇算法,編好程序,只能說(shuō)完成一半工作,另一半工作就是調(diào)試程序,運(yùn)行程序并得到正確結(jié)果。

二、實(shí)驗(yàn)要求常用的軟件開發(fā)方法,是將軟件開發(fā)過(guò)程劃分為分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)四個(gè)階段。雖然數(shù)據(jù)結(jié)構(gòu)課程中的實(shí)驗(yàn)題目的遠(yuǎn)不如從實(shí)際問(wèn)題中的復(fù)雜程度度高,但為了培養(yǎng)一個(gè)軟件工作者所應(yīng)具備的科學(xué)工作的方法和作風(fēng),也應(yīng)遵循以下五個(gè)步驟來(lái)完成實(shí)驗(yàn)題目:1.問(wèn)題分析和任務(wù)定義在進(jìn)行設(shè)計(jì)之前,首先應(yīng)該充分地分析和理解問(wèn)題,明確問(wèn)題要求做什么?限制條件是什么。本步驟強(qiáng)調(diào)的是做什么?而不是怎么做。對(duì)問(wèn)題的描述應(yīng)避開算法和所涉及的數(shù)據(jù)類型,而是對(duì)所需完成的任務(wù)作出明確的回答。例如:輸入數(shù)據(jù)的類型、值的范圍以及輸入的形式;輸出數(shù)據(jù)的類型、值的范圍及輸出的形式;若是會(huì)話式的輸入,則結(jié)束標(biāo)志是什么?是否接受非法的輸入?對(duì)非法輸入的回答方式是什么等。還應(yīng)該為調(diào)試程序準(zhǔn)備好測(cè)試數(shù)據(jù),包括合法的輸入數(shù)據(jù)和非法形式的輸入數(shù)據(jù)。2.邏輯設(shè)計(jì)和詳細(xì)設(shè)計(jì)在設(shè)計(jì)這一步驟中需分邏輯設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩步實(shí)現(xiàn)。邏輯設(shè)計(jì)指的是,對(duì)問(wèn)題描述中涉及的操作對(duì)象定義相應(yīng)的數(shù)據(jù)類型,并按照以數(shù)據(jù)結(jié)構(gòu)為中心的原則劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型;詳細(xì)設(shè)計(jì)則為定義相應(yīng)的存儲(chǔ)結(jié)構(gòu)并寫出各函數(shù)的偽碼算法。在這個(gè)過(guò)程中,要綜合考慮系統(tǒng)功能,使得系統(tǒng)結(jié)構(gòu)清晰、合理、簡(jiǎn)單和易于調(diào)試,抽象數(shù)據(jù)類型的實(shí)現(xiàn)盡可能做到數(shù)據(jù)封裝,基本操作的規(guī)格說(shuō)明盡可能明確具體。作為邏輯設(shè)計(jì)的結(jié)果,應(yīng)寫出每個(gè)抽象數(shù)據(jù)類型的定義(包括數(shù)據(jù)結(jié)構(gòu)的描述和每個(gè)基本操作的功能說(shuō)明),各個(gè)主要模塊的算法,并畫出模塊之間的調(diào)用關(guān)系圖。詳細(xì)設(shè)計(jì)的結(jié)果是對(duì)數(shù)據(jù)結(jié)構(gòu)和基本操作作出進(jìn)一步的求精,寫出數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的類型定義,寫出函數(shù)形式的算法框架。在求精的過(guò)程中,應(yīng)盡量避免陷入語(yǔ)言細(xì)節(jié),不必過(guò)早表述輔助數(shù)據(jù)結(jié)構(gòu)和局部變量。3.編碼實(shí)現(xiàn)和靜態(tài)檢查編碼是把詳細(xì)設(shè)計(jì)的結(jié)果進(jìn)一步求精為程序設(shè)計(jì)語(yǔ)言程序。如果基于詳細(xì)設(shè)計(jì)的偽碼算法就能直接在鍵盤上輸入程序的話,則可以不必用筆在紙上寫出編碼,而將這一步的工作放在上機(jī)準(zhǔn)備之后進(jìn)行,即在上機(jī)調(diào)試之前直接用鍵盤輸入。

然而,不管你是否寫出編碼的程序,在上機(jī)之前,認(rèn)真的靜態(tài)檢查是必不可少的。靜態(tài)檢查主要有兩種方法,一是用一組測(cè)試數(shù)據(jù)手工執(zhí)行程序(通常應(yīng)先分模塊檢查);二是通過(guò)對(duì)程序深入全面地理解程序邏輯,在這個(gè)過(guò)程中再加入一些注解和斷言。如果程序中邏輯概念清楚,后者將比前者有效。4.上機(jī)準(zhǔn)備和上機(jī)調(diào)試上機(jī)準(zhǔn)備包括以下幾個(gè)方面:(1)注意同一高級(jí)語(yǔ)言文本之間的差別。(2)熟悉機(jī)器的操作系統(tǒng)和語(yǔ)言集成環(huán)境的用戶手冊(cè),尤其是最常用的命令操作,以便順利進(jìn)行上機(jī)的基本活動(dòng)。(3)掌握調(diào)試工具,考慮調(diào)試方案,設(shè)計(jì)測(cè)試數(shù)據(jù)并手工得出正確結(jié)果。應(yīng)該能夠熟練運(yùn)用高級(jí)語(yǔ)言的程序調(diào)試器DBBUG調(diào)試程序。(4)上機(jī)調(diào)試程序時(shí)要帶一本高級(jí)語(yǔ)言教材或手冊(cè)。調(diào)試最好分模塊進(jìn)行,自底向上,即先調(diào)試低層函數(shù)。在調(diào)試過(guò)程中可以不斷借助DEBUG的各種功能,提高調(diào)試效率。調(diào)試中遇到的各種異常現(xiàn)象往往是預(yù)料不到的,此時(shí)應(yīng)動(dòng)手確定疑點(diǎn),通過(guò)修改程序來(lái)證實(shí)它或繞過(guò)它。調(diào)試正確后,認(rèn)真整理源程序及其注釋,形成格式和風(fēng)格良好的源程序清單和結(jié)果。5.總結(jié)和整理實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)結(jié)束后,要整理實(shí)驗(yàn)結(jié)果并認(rèn)真分析和總結(jié),根據(jù)教師要求寫出實(shí)驗(yàn)報(bào)告。

實(shí)驗(yàn)報(bào)告一般包括如下內(nèi)容:[1]實(shí)驗(yàn)內(nèi)容

[2]實(shí)驗(yàn)?zāi)康?/p>

[3]程序清單[4]調(diào)試步驟[5]運(yùn)行結(jié)果

原始數(shù)據(jù),相應(yīng)的運(yùn)行結(jié)果和必要的說(shuō)明。

[6]分析與思考

調(diào)試過(guò)程及調(diào)試中遇到的問(wèn)題及解決辦法;調(diào)試程序的心得與體會(huì);其他算法的存在與實(shí)踐等。若最終未完成調(diào)試,要認(rèn)真找出錯(cuò)誤并分析原因等。實(shí)驗(yàn)一、約瑟夫環(huán)【實(shí)驗(yàn)學(xué)時(shí)】4學(xué)時(shí)【實(shí)驗(yàn)?zāi)康摹空莆真湵淼幕静僮鳎翰迦?、刪除、查找等運(yùn)算,能夠靈活應(yīng)用鏈表這種數(shù)據(jù)結(jié)構(gòu)。【問(wèn)題描述】約瑟夫(Joseph)問(wèn)題的一種描述是:編號(hào)為1,2,…,n的n個(gè)人按順時(shí)針?lè)较驀蝗?,每人持有一個(gè)密碼(正整數(shù))。開始任選一個(gè)正整數(shù)作為報(bào)數(shù)上限值m,從第一個(gè)人開始按順時(shí)針?lè)较蜃?開始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼作為新的m值,從他在順時(shí)針?lè)较蛏系南乱粋€(gè)人開始重新從1報(bào)數(shù),如此下去,直至所有人全部出列為止。試設(shè)計(jì)一個(gè)程序求出出列順序。【基本要求】利用單向循環(huán)鏈表存儲(chǔ)結(jié)構(gòu)模擬此過(guò)程,按照出列的順序印出各人的編號(hào)。【測(cè)試數(shù)據(jù)】m的初值為20;n=7,7個(gè)人的密碼依次為:3,1,7,2,4,8,4,首先m值為6(正確的出列順序應(yīng)為6,1,4,7,2,3,5)。【實(shí)現(xiàn)提示】程序運(yùn)行后,首先要求用戶指定初始報(bào)數(shù)上限值,然后讀取各人的密碼??稍O(shè)n≤30。此題所用的循環(huán)鏈表中不需要“頭結(jié)點(diǎn)”,請(qǐng)注意空表和非空表的界限。【選作內(nèi)容】向上述程序中添加在順序結(jié)構(gòu)上實(shí)現(xiàn)的部分實(shí)驗(yàn)過(guò)程:的車輛必須先退出場(chǎng)為它讓路,待該輛車開出大門外,其他車輛再按次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用,試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序?!净疽蟆恳詶DM停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。對(duì)一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn)。隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)?!緶y(cè)試數(shù)據(jù)】設(shè)n=2,輸入數(shù)據(jù)為:(‘A’,1,5),(‘A’,2,10),(‘D’,1,5),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。其中:‘A’表示到達(dá)(Arrival),‘D’表示離去(Departure),‘E’表示輸入結(jié)束(End)?!緦?shí)現(xiàn)提示】需另設(shè)一個(gè)棧,臨時(shí)停放為給要離去的汽車讓路而從停車場(chǎng)退出來(lái)的汽車,也用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)。輸入數(shù)據(jù)按到達(dá)或離去的時(shí)刻有序。棧中每個(gè)元素表示一輛汽車,包含兩個(gè)數(shù)據(jù)項(xiàng):汽車的牌照號(hào)碼和進(jìn)入停車場(chǎng)的時(shí)刻。【選作內(nèi)容】?jī)蓚€(gè)棧共享空間,思考應(yīng)開辟數(shù)組的空間是多少?汽車可以有不同種類,則他們的占地面積不同,收費(fèi)標(biāo)準(zhǔn)也不同,如1輛客車和1。5輛小汽車的占地面積相同,1輛十輪卡車占地面積相當(dāng)于3輛小汽車的占地面積。汽車可以直接從便道上開走,此時(shí)排在它前面的汽車要先開走讓路,然后再依次排到隊(duì)尾。停放在便道上的汽車業(yè)收費(fèi),收費(fèi)標(biāo)準(zhǔn)比停放在停車場(chǎng)的車低,請(qǐng)思考如何修改結(jié)構(gòu)以滿足這種要求。實(shí)驗(yàn)三、哈夫曼編/譯碼器【實(shí)驗(yàn)學(xué)時(shí)】4學(xué)時(shí)【實(shí)驗(yàn)?zāi)康摹空莆斩鏄涞拇鎯?chǔ)結(jié)構(gòu)及其相關(guān)操作。掌握構(gòu)造哈夫曼樹的基本思想,及其編碼/譯碼過(guò)程?!締?wèn)題描述】利用哈夫曼編碼進(jìn)行通信可以大大提高信道利用率,縮短信息傳輸時(shí)間,降低傳輸成本。但是,這要求在發(fā)送端通過(guò)一個(gè)編碼系統(tǒng)對(duì)待傳輸數(shù)據(jù)預(yù)先編碼,在接收端將傳來(lái)的數(shù)據(jù)進(jìn)行譯碼(復(fù)原)。對(duì)于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個(gè)完整的編/譯碼系統(tǒng)。試為這樣的信息收發(fā)站寫一個(gè)哈夫曼的編/譯碼系統(tǒng)?!净疽蟆?一個(gè)完整的系統(tǒng)應(yīng)具有以下功能:I:初始化(Initialization)。從終端讀入字符集大小n,以及n個(gè)字符和n個(gè)權(quán)值,建立哈夫曼樹,并將它存于文件hfmTree中。E:編碼(Encoding)。利用以建好的哈夫曼樹(如不在內(nèi)存,則從文件hfmTree中讀入),對(duì)文件ToBeTran中的正文進(jìn)行編碼,然后將結(jié)果存入文件CodeFile中。D:譯碼(Decoding)。利用已經(jīng)建好的哈夫曼樹將文件CodeFile中的代碼進(jìn)行譯碼,結(jié)果存入文件TextFile中。P:打印代碼文件(Print)。將文件CodeFile以緊湊格式顯示在終端上,每行50個(gè)代碼,同時(shí)將此字符形式的編碼寫入文件CodePrint中。T:打印哈夫曼樹(Treeprinting)。將已經(jīng)在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示在終端上,同時(shí)將此字符形式的哈夫曼樹寫入文件TreePrint中?!緶y(cè)試數(shù)據(jù)】利用教科書例6-2中的數(shù)據(jù)調(diào)試程序。用下表給出的字符集和頻度的實(shí)際統(tǒng)計(jì)數(shù)據(jù)建立哈夫曼樹,并實(shí)現(xiàn)以下報(bào)文的編碼和譯碼:“THISPROGRAMISMYFAVORITE”。字符ABCDEFGHIJKLM頻度1866413223210321154757153220字符NOPQRSTUVWXYZ頻度5763151485180238181161【實(shí)現(xiàn)提示】編碼結(jié)果以文本式存儲(chǔ)在文件CodeFile中。用戶界面可以設(shè)計(jì)為“菜單”方式:顯示上述功能符號(hào),再加上“Q”,表示退出運(yùn)行Quit。請(qǐng)用戶鍵入一個(gè)選擇功能符。此功能執(zhí)行完畢后再顯示此菜單,直至某次用戶選擇了“Q”為止。在程序的一次執(zhí)行過(guò)程中,第一次執(zhí)行I,D或C命令之后,哈夫曼樹已經(jīng)在內(nèi)存了,不必再讀入。每次執(zhí)行中不一定執(zhí)行I命令,因?yàn)槲募fmTree可能早已建好。【選作內(nèi)容】上述文件CodeFile中的每個(gè)“0”或“1”實(shí)際上占用了一個(gè)字節(jié)的空間,只起到示意或模擬的作用。為最大限度地利用碼點(diǎn)存儲(chǔ)能力,試改寫你的系統(tǒng),將編碼結(jié)果以二進(jìn)制形式存放在文件CodeFile中。修改你的系統(tǒng),實(shí)現(xiàn)對(duì)你的系統(tǒng)的源程序的編碼和譯碼(主要是將行尾符編/譯碼問(wèn)題)。實(shí)現(xiàn)各個(gè)轉(zhuǎn)換操作的源/目的文件,均由用戶在選擇此操作時(shí)指定。實(shí)驗(yàn)四、圖遍歷的演示。【實(shí)驗(yàn)學(xué)時(shí)】4學(xué)時(shí)【實(shí)驗(yàn)?zāi)康摹空莆請(qǐng)D的基本存儲(chǔ)方法。熟練掌握?qǐng)D的兩種搜索路徑的遍歷方法。【問(wèn)題描述】很多涉及圖上操作的算法都是以圖的遍歷操作為基礎(chǔ)的。試寫一個(gè)程序,演示連通的無(wú)向圖上,遍歷全部結(jié)點(diǎn)的操作?!净疽蟆恳脏徑佣嘀乇頌榇鎯?chǔ)結(jié)構(gòu),實(shí)現(xiàn)連通無(wú)向圖的深度優(yōu)先和廣度優(yōu)先遍歷。以用戶指定的結(jié)點(diǎn)為起點(diǎn),分別輸出每種遍歷下的結(jié)點(diǎn)訪問(wèn)序列和相應(yīng)生成樹的邊集。【測(cè)試數(shù)據(jù)】教科書圖7.33。暫時(shí)忽略里程,起點(diǎn)為北京?!緦?shí)現(xiàn)提示】設(shè)圖的結(jié)點(diǎn)不超過(guò)30個(gè),每個(gè)結(jié)點(diǎn)用一個(gè)編號(hào)表示(如果一個(gè)圖有n個(gè)結(jié)點(diǎn),則它們的編號(hào)分別為1,2,…,n)。通過(guò)輸入圖的全部邊輸入一個(gè)圖,每個(gè)邊為一個(gè)數(shù)對(duì),可以對(duì)邊的輸入順序作出某種限制。注意,生成樹的邊是有向邊,端點(diǎn)順序不能顛倒?!具x作內(nèi)容】借助于棧類型(自己定義和實(shí)現(xiàn)),用非遞歸算法實(shí)現(xiàn)深度優(yōu)先遍歷。以鄰接表為存儲(chǔ)結(jié)構(gòu),建立深度優(yōu)先生成樹和廣度優(yōu)先生成樹,再按凹入表或樹形打印生成樹。正如習(xí)題7。8提示中分析的那樣,圖的路徑遍歷要比結(jié)點(diǎn)遍歷具有更為廣泛的應(yīng)用。再寫一個(gè)路徑遍歷算法,求出從北京到廣州中途不過(guò)鄭州的所有簡(jiǎn)單路徑及其里程。實(shí)驗(yàn)五查找算法實(shí)現(xiàn)【實(shí)驗(yàn)學(xué)時(shí)】4學(xué)時(shí)【實(shí)驗(yàn)?zāi)康摹渴炀氄莆枕樞虿檎摇⒄郯氩檎壹岸媾判驑?、平衡二叉樹上的查找、插入和刪除的方法,比較它們的平均查找長(zhǎng)度?!締?wèn)題描述】查找表是數(shù)據(jù)處理的重要操作,試建立有100個(gè)結(jié)點(diǎn)的二叉排序樹進(jìn)行查找,然后用原數(shù)據(jù)建

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論