第一篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計課程設(shè)計教學(xué)大綱
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》課程設(shè)計教學(xué)大綱
Course Design of Data Structure
課程代碼:
適用專業(yè):信息計算、信息安全 總學(xué)時數(shù):1周編寫年月:2004年7月
執(zhí) 筆:劉科峰、李小英、高學(xué)軍
課程性質(zhì):設(shè)計(論文)/必修 開課學(xué)期:5 總學(xué)分?jǐn)?shù):1 修訂年月:2007年7月
一、課程設(shè)計的性質(zhì)和目的
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》是本學(xué)院本科專業(yè)的集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)完《數(shù)據(jù)結(jié)構(gòu)》課程后進(jìn)行的一次全面的綜合應(yīng)用練習(xí)。其目的就是要達(dá)到理論與實際相結(jié)合,使學(xué)生能夠根據(jù)數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,能把現(xiàn)實世界中的實際問題在計算機(jī)內(nèi)部表示出來,并培養(yǎng)良好的程序設(shè)計技能。
二、課程設(shè)計內(nèi)容及學(xué)時分配
寫出不少于3000字的課程設(shè)計說明書。說明書中除了在封面中應(yīng)有題目、班級、姓名、學(xué)號和課程設(shè)計日期以外,其正文一般有如下幾個方面的內(nèi)容:
1.需求分析 2.概要設(shè)計 3.詳細(xì)設(shè)計 4.調(diào)試分析 5.測試結(jié)果 6.附錄或參考資料
三、課程設(shè)計教學(xué)基本要求
四、課程設(shè)計選題
根據(jù)教材《數(shù)據(jù)結(jié)構(gòu)題集(C語言版)》(嚴(yán)蔚敏、吳偉民主編)選擇課程設(shè)計題目,或選擇下列與實際應(yīng)用緊密結(jié)合的較綜合性的題目,要求通過設(shè)計,在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計及其實現(xiàn)等方面加深對課程基本內(nèi)容的理解和綜合運(yùn)用。
1. 運(yùn)動會分?jǐn)?shù)統(tǒng)計系統(tǒng); 2. 停車場管理系統(tǒng); 3. 民航售票系統(tǒng); 4. 有理數(shù)四則運(yùn)算器; 5. 文本格式化器; 6. 哈夫曼編/譯碼器; 7. 教學(xué)計劃編制; 8. 計算機(jī)輔助考核系統(tǒng);
9. 學(xué)籍管理系統(tǒng); 10. 圖書管理系統(tǒng)。
五、本課程與其它課程的聯(lián)系與分工
本課程是《數(shù)據(jù)結(jié)構(gòu)》的配套課程,學(xué)完《數(shù)據(jù)結(jié)構(gòu)》后進(jìn)行的綜合性課程設(shè)計。
六、成績評定
由指導(dǎo)教師根據(jù)學(xué)生完成任務(wù)的情況、課程設(shè)計說明書的質(zhì)量和課程設(shè)計過程中的工作態(tài)度等綜合打分。課程設(shè)計結(jié)束時,要求學(xué)生寫出課程設(shè)計報告,可運(yùn)行的軟件系統(tǒng)(包括源程序)。課程設(shè)計成績:上機(jī)情況(20%)包括出勤情況、調(diào)試表現(xiàn)。設(shè)計報告占40%,設(shè)計作品占40%。
成績評定實行優(yōu)、良、中、及格和不及格五個等級。優(yōu)秀者人數(shù)一般不得超過總?cè)藬?shù)的20%。不及格者不能得到相應(yīng)的學(xué)分,需重新做課程設(shè)計,經(jīng)指導(dǎo)教師考核及格后,方可取得相應(yīng)學(xué)分。有關(guān)的考查相關(guān)材料(文字材料以及磁盤或光盤)統(tǒng)一妥善保管。
七、建議教材與教學(xué)參考書
[1] 《數(shù)據(jù)結(jié)構(gòu)》,嚴(yán)蔚敏 吳偉民 編著,清華大學(xué)出版社
[2] 《數(shù)據(jù)結(jié)構(gòu)題集》嚴(yán)蔚敏 吳偉民 米寧 編著,清華大學(xué)出版社
第二篇:《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計教學(xué)大綱
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計教學(xué)大綱
適用專業(yè):計算機(jī)科學(xué)與技術(shù) 課程周數(shù):2周
一、大綱說明
本大綱根據(jù)計算機(jī)科學(xué)與技術(shù)專業(yè)人才培養(yǎng)方案制訂。
(一)課程設(shè)計性質(zhì)
課程設(shè)計是學(xué)生對課程所學(xué)知識的綜合運(yùn)用,它與課堂聽講、上機(jī)實驗、課外練習(xí)、自學(xué)研究相輔相成,構(gòu)成一個完整的課程教學(xué)體系。
(二)主要先修課程和后續(xù)課程 1.先修課程:《C語言程序設(shè)計》 2.后續(xù)課程:《計算機(jī)組成原理》、《操作系統(tǒng)》、《數(shù)據(jù)庫系統(tǒng)原理》
二、課程設(shè)計目的及基本要求
《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性強(qiáng)的課程,其中對算法設(shè)計和程序編寫的掌握尤為重要。學(xué)生雖然可以通過與課堂教學(xué)同步的上機(jī)實驗完成相關(guān)內(nèi)容的練習(xí),但卻往往局限于一些功能簡單、彼此之間關(guān)系獨立的算法和程序。課程設(shè)計是一種綜合訓(xùn)練,致力于培養(yǎng)學(xué)生全面、靈活的算法設(shè)計思想和較高的編程能力,為今后從事計算機(jī)開發(fā)與應(yīng)用打下基礎(chǔ)。新世紀(jì)需要具有豐富科學(xué)知識、獨立解決實際問題、有創(chuàng)造能力的新型人才,這也是該課程設(shè)計的最終目的。
三、課程設(shè)計內(nèi)容及安排
1、矩陣的轉(zhuǎn)置、加減和相乘
問題描述:采用十字鏈表存儲的稀疏矩陣,完成矩陣轉(zhuǎn)置、加減和相乘功能。要求:
1)采用函數(shù)形式完成轉(zhuǎn)置、相加、相減和相乘; 2)有輸入數(shù)據(jù)合法性檢查; 3)矩陣的存儲采用動態(tài)數(shù)組;
4)兩個矩陣產(chǎn)生后要分別打印出來,完成相應(yīng)處理后結(jié)果要打印出來; 5)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
2、線索二叉樹
問題描述:實現(xiàn)線索二叉樹的生成、遍歷、查找、插入和刪除操作。要求:
1)各功能模塊必須是單獨的函數(shù); 2)線索二叉樹是動態(tài)生存的; 3)輸入數(shù)據(jù)進(jìn)行必要的合法性檢查;
4)執(zhí)行每一個功能后,按二叉樹廣義表的表達(dá)方式打印輸出,檢查結(jié)果是否正確; 5)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
3、根據(jù)哈夫曼樹的原理求n個自然數(shù)相加減后結(jié)果最小(中間結(jié)果、最后結(jié)果不能負(fù))。
問題描述:實現(xiàn)線索二叉樹的生成、遍歷、查找、插入和刪除操作。要求:
1)可以循環(huán)測試,可以選擇退出程序;
2)打印這n個自然數(shù)進(jìn)行加減的表達(dá)式(注意:中間結(jié)果不能為負(fù)); 例如:輸入1,2,3,最后打印出3-2-1=0 3)輸入數(shù)據(jù)要進(jìn)行合法性檢查;
4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
4、普里姆算法求最小生成樹
問題描述:用普里姆算法求有向網(wǎng)圖或無向網(wǎng)圖的最小生成樹。要求:
1)先生成一個網(wǎng)圖,該網(wǎng)圖既能是無向網(wǎng)圖,有能是有向網(wǎng)圖; 2)要求分別采用鄰接矩陣和鏈接表存儲來完成; 3)最后打印輸出最小生成樹;
4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
5、克魯斯卡爾算法求最小生成樹
問題描述:用克魯斯卡爾算法求有向網(wǎng)圖或無向網(wǎng)圖的最小生成樹。要求:
1)先生成一個網(wǎng)圖,該網(wǎng)圖既能是無向網(wǎng)圖,有能是有向網(wǎng)圖; 2)要求分別采用鄰接矩陣和鏈接表存儲來完成; 3)最后打印輸出最小生成樹;
4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
6、狄杰斯特算法求最短路徑
問題描述:采用狄杰斯特算法求一個頂點到其它頂點的最短路徑。要求:
1)先生成一個帶權(quán)的有向圖,并打印輸出; 2)用函數(shù)形式完成狄杰斯特算法;
3)打印輸出最后的該頂點到其它頂點的路徑,并打印最短路徑。4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
7、佛洛依德算法求最短路徑
問題描述:采用佛洛依德算法求每對頂點到其它頂點的最短路徑。要求:
1)先生成一個帶權(quán)的有向圖,并打印輸出; 2)用函數(shù)形式完成佛洛依德算法; 3)打印輸出每對頂點的最短路徑。
4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
8、分塊查找
問題描述:采用分塊查找的方法查找指定的關(guān)鍵碼。要求:
1)可以循環(huán)查找,可以選擇退出;
2)分別采用順序存儲和鏈?zhǔn)酱鎯ν瓿煞謮K查找,其中在順序存儲結(jié)果下,索引表的查找采用二分查找;
3)分別用函數(shù)完成索引表查找和塊中查找;
4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
9、關(guān)鍵路徑
問題描述:建立AOE圖,確定其拓?fù)溆行蚝笄箨P(guān)鍵路徑。要求:
1)建立一個AOE圖,并輸出結(jié)果確保創(chuàng)建成功;
2)判斷AOE圖是一個拓?fù)溆行蛐蛄校绻皇峭負(fù)溆行騽t報錯; 3)編寫函數(shù)求AOE圖的關(guān)鍵路徑; 4)打印輸出關(guān)鍵路徑;
5)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
10、二叉排序樹
問題描述:完成二叉排序樹的創(chuàng)建、查找、插入和刪除操作。要求:
1)創(chuàng)建一顆二叉排序樹,并打印輸出;
2)分別編寫函數(shù)完成二叉排序樹的查找、插入和刪除; 3)測試二叉排序樹的查找、插入和刪除,分別打印測試結(jié)果; 4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
11、B-樹
問題描述:完成B-樹的創(chuàng)建、查找、插入和刪除。要求:
1)創(chuàng)建一顆B-樹,并打印輸出;
2)分別編寫函數(shù)完成B-的查找、插入和刪除;
3)測試B-樹的查找、插入和刪除,分別打印測試結(jié)果; 4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
12、哈希表查找
問題描述:定義一個哈希表和對哈希表進(jìn)行插入、查找和刪除、打印。要求:
1)定義一個哈希表,并打印輸出結(jié)果; 2)分別編寫函數(shù)完成查找、插入和刪除; 3)測試查找、插入和刪除,分別打印測試結(jié)果;
4)每一個函數(shù)要有必要的注釋,在課程設(shè)計論文中有流程圖。
四、指導(dǎo)方式
集體輔導(dǎo)與個別輔導(dǎo)相結(jié)合。
五、課程設(shè)計考核方法及成績評定
1、程序清單:代碼應(yīng)具有詳細(xì)注釋,用來說明程序的功能、結(jié)構(gòu);
2、設(shè)計報告:報告中應(yīng)包含上機(jī)時遇到的問題及解決辦法,觀察到的現(xiàn)象及其分析,對程序設(shè)計技巧的總結(jié)及分析等;程序的輸出結(jié)果及對結(jié)果的分析;實驗的心得體會,以及其它信息;
3、提交時,須向指導(dǎo)教師說明:程序的使用方法,調(diào)用方法、操作步驟等;要求輸入信息的類型及格式;出錯信息的含義及程序的適用范圍等。
成績評定:課程設(shè)計成績分兩部分,設(shè)計報告占40%,設(shè)計作品占60%。
六、課程設(shè)計教材及主要參考資料 教學(xué)參考書
[1]李素若.《數(shù)據(jù)結(jié)構(gòu)》.北京:化學(xué)工業(yè)出版社,2009.參考資料:
[1] 朱蓉,《數(shù)據(jù)結(jié)構(gòu)實驗指導(dǎo)書》
[2]嚴(yán)蔚敏 吳偉民,.數(shù)據(jù)結(jié)構(gòu)(C語言版),1999,清華大學(xué)出版社; [3]嚴(yán)蔚敏 吳偉民,.數(shù)據(jù)結(jié)構(gòu)題集(C語言版),1999,清華大學(xué)出版社; [4]徐孝凱,數(shù)據(jù)結(jié)構(gòu)課程實驗,2002,清華大學(xué)出版社;
[5]孟佳娜 胡瀟琨,算法與數(shù)據(jù)結(jié)構(gòu)實驗與習(xí)題,2004,機(jī)械工業(yè)出版社;
七、其他 i=[1] t=[12] i=[2] t=[4] i=[3] t=[10] i=[4] t=[12] i=[5] t=[1] i=[6] t=[2] i=[7] t=[2] i=[8] t=[11] i=[9] t=[5] i=[10] t=[10] i=[11] t=[11] i=[12] t=[8] i=[13] t=[2] i=[14] t=[3] i=[15] t=[9] i=[16] t=[7] i=[17] t=[5] i=[18] t=[6] i=[19] t=[12] i=[20] t=[7] i=[21] t=[3] i=[22] t=[7] i=[23] t=[8] i=[24] t=[6] i=[25] t=[7] i=[26] t=[8] i=[27] t=[3] i=[28] t=[2] i=[29] t=[7] i=[30] t=[4] i=[31] t=[3] i=[32] t=[8] i=[33] t=[9] i=[34] t=[1] i=[35] t=[1] i=[36] t=[3] i=[37] t=[8] i=[38] t=[1] i=[39] t=[10] i=[40] t=[12] i=[41] t=[10] i=[42] t=[9] i=[43] t=[12] i=[44] t=[2] i=[45] t=[1] i=[46] t=[6] i=[47] t=[4] i=[48] t=[7] i=[49] t=[1]
第三篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計教學(xué)大綱
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》教學(xué)大綱
Data Structure Course Design
一、課程的性質(zhì)、教學(xué)目的和要求
《數(shù)據(jù)結(jié)構(gòu)》是計算機(jī)軟件的一門基礎(chǔ)課程,計算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要用到各種類型的數(shù)據(jù)結(jié)構(gòu)。學(xué)好數(shù)據(jù)結(jié)構(gòu)對掌握實際編程能力是很有幫助的。為了學(xué)好《數(shù)據(jù)結(jié)構(gòu)》,必須編寫一些在特定數(shù)據(jù)結(jié)構(gòu)上的算法,通過上機(jī)調(diào)試,才能更好地掌握各種數(shù)據(jù)結(jié)構(gòu)及其特點,同時提高解決計算機(jī)應(yīng)用實際問題的能力。
二、設(shè)計要點
1.設(shè)計和調(diào)試過程要規(guī)范化。① 需求分析
將題目中要求的功能進(jìn)行敘述分析,并且設(shè)計解決此問題的數(shù)據(jù)存儲結(jié)構(gòu),(有些題目已經(jīng)指定了數(shù)據(jù)存儲的,按照指定的設(shè)計),設(shè)計或敘述解決此問題的算法,描述算法建議使用流程圖,進(jìn)行算法分析指明關(guān)鍵語句的時間復(fù)雜度。
給出實現(xiàn)功能的一組或多組測試數(shù)據(jù),程序調(diào)試后,將按照此測試數(shù)據(jù)進(jìn)行測試的結(jié)果列出來。
對有些題目提出算法改進(jìn)方案,比較不同算法的優(yōu)缺點。
如果程序不能正常運(yùn)行,寫出實現(xiàn)此算法中遇到的問題,和改進(jìn)方法。②源程序(可以是一組源程序,即詳細(xì)設(shè)計部分)
源程序要按照寫程序的規(guī)則來編寫。要結(jié)構(gòu)清晰,重點函數(shù)的重點變量,重點功能部分要加上清晰的程序注釋。
程序能夠運(yùn)行,要有基本的容錯功能。盡量避免出現(xiàn)操作錯誤時出現(xiàn)死循環(huán)。
2.課程設(shè)計實習(xí)報告的書寫格式
① 設(shè)計題目(任選其一)②運(yùn)行環(huán)境(軟、硬件環(huán)境)③算法設(shè)計的思想 ④算法的流程圖 ⑤算法設(shè)計分析 ⑥源代碼 ⑦運(yùn)行結(jié)果分析 ⑧收獲及體會 3.實施方式
可設(shè)3-4人一題,安排在《數(shù)據(jù)結(jié)構(gòu)》課程開課學(xué)期布置題目,然后在期末兩周時間內(nèi)完成。
三.設(shè)計要求
學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時間,安排好課設(shè)的時間計劃,并在課設(shè)過程中不斷檢測自己的計劃完成情況,及時的向教師匯報。課程設(shè)計按照教學(xué)要求需要兩周時間完成,兩周中每天至少要上3-4小時的機(jī)來調(diào)試C語言設(shè)計的成成,總共至少要上機(jī)調(diào)試程序30小時。為保證質(zhì)量,需要每個學(xué)生將每天的上機(jī)調(diào)試程序的時間記錄下來,作為評判成績的標(biāo)準(zhǔn)之一。
四.設(shè)計題目
1、運(yùn)動會分?jǐn)?shù)統(tǒng)計
*問題描述:參加運(yùn)動會有n個學(xué)校,學(xué)校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)*功能要求:
1).可以輸入各個項目的前三名或前五名的成績; 2).能統(tǒng)計各學(xué)校總分,3).可以按學(xué)校編號、學(xué)校總分、男女團(tuán)體總分排序輸出;
4).可以按學(xué)校編號查詢學(xué)校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。
規(guī)定:輸入數(shù)據(jù)形式和范圍:20以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運(yùn)動項目的名稱)
輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形
界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。
*存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求運(yùn)動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。(數(shù)據(jù)文件的數(shù)據(jù)讀寫方法等相關(guān)內(nèi)容在c語言程序設(shè)計的書上,請自學(xué)解決)請在最后的上交資料中指明你用到的存儲結(jié)構(gòu);
測試數(shù)據(jù):要求使用
1、全部合法數(shù)據(jù);
2、整體非法數(shù)據(jù);
3、局部非法數(shù)據(jù)。進(jìn)行程序測試,以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請在上交的資料中寫明;
2、一元多項式計算
*問題描述:能夠按照指數(shù)降序排列建立并輸出多項式; 能夠完成兩個多項式的相加、相減,并將結(jié)果輸入;
在上交資料中請寫明:存儲結(jié)構(gòu)、多項式相加的基本過程的算法(可以使用程序流程圖)、源程序、測試數(shù)據(jù)和結(jié)果、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法;
3、訂票系統(tǒng)
*問題描述:通過此系統(tǒng)可以實現(xiàn)如下功能: 1)錄入:
可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)2)查詢:
可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達(dá)城市,航班票價,票價折扣,確定航班是否滿倉); 可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;
3)訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班; 4)退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;
客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。5)修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件 *要求:
根據(jù)以上功能說明,設(shè)計航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計程序完成功能;
4、迷宮求解
*問題描述:可以輸入一個任意大小的迷宮數(shù)據(jù),用非遞歸的方法求出一條走出迷宮的路徑,并將路徑輸出; *要求:
在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、源程序、測試數(shù)據(jù)和結(jié)果、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法;
5、文章編輯
*問題描述:輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行。
*要求(1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。
*存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應(yīng)的功能;
*輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點符號。
*輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出“全部字母數(shù)”、“數(shù)字個數(shù)”、“空格個數(shù)”、“文章總字?jǐn)?shù)”(3)輸出刪除某一字符串后的文章;
6、joseph環(huán)
*問題描述:編號是1,2,……,n的n個人按照順時針方向圍坐一圈,每個人只有一個密碼(正整數(shù))。一開始任選一個正整數(shù)作為報數(shù)上限值m,從第一個仍開始順時針方向自1開始順序報數(shù),報到m時停止報數(shù)。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數(shù),如此下去,直到所有人全部出列為止。設(shè)計一個程序來求出出列順序。*要求:利用單向循環(huán)鏈表存儲結(jié)構(gòu)模擬此過程,按照出列的順序輸出各個人的編號。
*測試數(shù)據(jù):
m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什么?
*輸入數(shù)據(jù):建立輸入處理輸入數(shù)據(jù),輸入m的初值,n,輸入每個人的密碼,建立單循環(huán)鏈表。
*輸出形式:建立一個輸出函數(shù),將正確的輸出序列
7、猴子選大王
*問題描述:一堆猴子都有編號,編號是1,2,3...m ,這群猴子(m個)按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第N個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。*輸入數(shù)據(jù):輸入m,n m,n 為整數(shù),n 8、建立二叉樹,層序、先序遍歷(用遞歸或非遞歸的方法都可以)*問題描述: 要求能夠輸入樹的各個結(jié)點,并能夠輸出用不同方法遍歷的遍歷序列;分別建立建立二叉樹存儲結(jié)構(gòu)的的輸入函數(shù)、輸出層序遍歷序列的函數(shù)、輸出先序遍歷序列的函數(shù); 9、赫夫曼樹的建立 *問題描述:建立建立最優(yōu)二叉樹函數(shù) *要求:可以建立函數(shù)輸入二叉樹,并輸出其赫夫曼樹 在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、輸入輸出、源程序、測試數(shù)據(jù)和結(jié)果、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法; 10、紙牌游戲 *問題描述:編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次,直到最后一張牌;...再依次5的倍數(shù)的牌翻一次,6的,7的 直到 以52為基數(shù)的 翻過。輸出:這時正面向上的牌有哪些? 11、圖的建立及輸出 *問題描述:建立圖的存儲結(jié)構(gòu)(圖的類型可以是有向圖、無向圖、有向網(wǎng)、無向網(wǎng),學(xué)生可以任選兩種類型),能夠輸入圖的頂點和邊的信息,并存儲到相應(yīng)存儲結(jié)構(gòu)中,而后輸出圖的鄰接矩陣。 12、拓?fù)渑判?/p> *問題描述:編寫函數(shù)實現(xiàn)圖的拓?fù)渑判颉?/p> 13、各種排序 *問題描述:對30000個隨機(jī)整數(shù),利用插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序等排序方法進(jìn)行排序,并統(tǒng)計每一種排序上機(jī)所花費的時間。 *輸入的數(shù)據(jù)形式為任何一個正整數(shù),大小不限。*輸出的形式:數(shù)字大小逐個遞增的數(shù)列? 14、圖的遍歷 *問題描述:對任意給定的圖(頂點數(shù)和邊數(shù)自定),建立它的鄰接表并輸出,然后利用隊列的五種基本運(yùn)算(置空隊列、進(jìn)隊、出隊、取隊頭元素、判隊空)實現(xiàn)圖的廣度優(yōu)先搜索周游。 15、線性表的操作 *問題描述:利作鏈表的插入運(yùn)算建立線性鏈表,然后利用鏈表的查找、刪除、計數(shù)、輸出等運(yùn)算反復(fù)實現(xiàn)鏈表的這些操作(插入、刪除、查找、計數(shù)、輸出單獨寫成函數(shù)的形式),并能在屏幕上輸出操作前后的結(jié)果。 16、長整數(shù)四則運(yùn)算 *問題描述:設(shè)計一個實現(xiàn)任意長的整數(shù)進(jìn)行加法運(yùn)算的演示程序。*基本要求:利用雙向循環(huán)鏈表實現(xiàn)長整數(shù)的存儲,每個結(jié)點含一個整形變量。任何整形變量的范圍是-(2^151)。輸入和輸出形式:按中國對于長整數(shù)的表示習(xí)慣,每四位一組,組間用逗號隔開。*測試數(shù)據(jù): (1)0;0;應(yīng)輸出“0”。 (2)-2345,6789;-7654,3211;應(yīng)輸出“-1,0000,0000”。(3)-9999,9999;1,0000,0000,0000;應(yīng)輸出“999(4)1,0001,0001;-1,0001,0001;應(yīng)輸出“0”。(5)1,0001,0001;-1,0001,0000;應(yīng)輸出“1”。 (6)-9999,9999,9999;-9999,9999,9999;應(yīng)輸出“1,9999,9999,9998”。 (7)1,0000,9999,9999;1;應(yīng)輸出“1,0001,0000,0000”。 *實現(xiàn)提示: (1)每個結(jié)點中可以存放的最大整數(shù)為32767,才能保證兩數(shù)相加不會溢出,但若這樣存放,即相當(dāng)于按32768進(jìn)制存放,在十進(jìn)制與32768 5 進(jìn)制數(shù)之間的轉(zhuǎn)換十分不方便,故可以在每個結(jié)點中僅存十進(jìn)制的4位,即不超過9999的非負(fù)整數(shù),整個鏈表表示為萬進(jìn)制。 (2)可以利用頭結(jié)點數(shù)據(jù)域的符號代表長整數(shù)的符號。用其絕對值表示元素結(jié) 點數(shù)目。相加過程中不要破壞兩個操作數(shù)鏈表。兩操作數(shù)的頭指針存于指針數(shù)組中是簡化程序結(jié)構(gòu)的一種方法。不能給長整數(shù)位數(shù)規(guī)定上限。 17、馬踏棋盤 *問題描述:將馬隨機(jī)放在國際象棋的8 8棋盤Bord[8Ⅱ8]的某個方格中,馬按走棋規(guī)則進(jìn)行移動。要求每個方格上只進(jìn)入一次,走遍棋盤上全部64個方格。編制非遞歸程序,求出馬的行走路線,并按求出的行走路線,將數(shù)字1,2,?,64依次填入個8 8的方陣,輸出之。*測試數(shù)據(jù):由讀者指定,可自行指定一個馬的初始位置。 *實現(xiàn)提示:每次在多個可走位置中選擇一個進(jìn)行試探,其余未曾試探過的可走位置必須用適當(dāng)結(jié)構(gòu)妥善管理,以備試探失敗時的“回溯”(悔棋)使用。 18、校園導(dǎo)游咨詢 *問題描述: (1)設(shè)計你的學(xué)校的校園平面圖,所含景點不少于10個。以圖中頂點表示學(xué)校各景點,存放景點名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。 (2)為來訪客人提供圖中任意景點的問路查詢,即查詢?nèi)我鈨蓚€景點之間的一條最短的簡單路徑。 (3)為來訪客人提供圖中任意景點相關(guān)信息的查詢。*測試數(shù)據(jù):由讀者根據(jù)實際情況指定。 *實現(xiàn)提示:一般情況下,校園的道路是雙向通行的,可設(shè)校園平面圖是一個無向網(wǎng)。頂點和邊均含有相關(guān)信息。 19、編制一個求解迷宮通路的圖形界面演示程序。*問題描述: 1)輸入一個任意大小的迷宮,任設(shè)起點、終點、障礙,用棧求出一條走出迷宮的路徑,并顯示在屏幕上。 2)根據(jù)用戶界面提示,用鍵盤輸入。Home鍵設(shè)置迷宮起點,End鍵設(shè)終點,上下左右箭頭鍵移動,Enter鍵添加墻,Del鍵刪除墻,完成后按F9 鍵演示,Esc鍵退出。 3)橙色的實心小圓圈表示起點,綠色實心圓圈表示終點,空心圓圈表示足跡,紅色方塊表示墻。4)本程序只求出一條成功的通路,但若對求解函數(shù)MazePath稍加更改即可求得全部路徑。此外,因受圖形界面限制,不能保存或載入測試文件(此功能可在Maze_text中實現(xiàn))。 5)當(dāng)未輸入起點時,消息顯示“Error: You must set Startplace.”;未輸入終點時,顯示“Error: You must set Endplace.” 找到路徑時,屏幕顯示足跡,并在消息框出現(xiàn)Path found,否則消去足跡,顯示Path not found.20.一元稀疏多項式計算器 *問題描述:一元多項式簡單計算器的基本功能是:(1)輸入并建立多項式;(2)輸出多項式,輸出形式為整數(shù)序列n,c1,e1,c2,e2,?,cn,en,其中n是多項式的項數(shù),ci和ei分別是第I項的系數(shù)和指數(shù),序列指指數(shù)降序排列;(3)多項式a和b相加,建立多項式a+b;(4)多項式a和b相減,建立多項式a-b。*實現(xiàn)提示:用帶頭結(jié)點的單鏈表存儲多項式,多項式的項數(shù)存在頭結(jié)點。 21.算術(shù)表達(dá)式求值演示 *問題描述:表達(dá)式求值是實現(xiàn)程序設(shè)計語言的基本問題之一,也是棧的應(yīng)用的一個典型例子。設(shè)計一個程序,演示用算符優(yōu)先法對算術(shù)表達(dá)式求值的過程。 *基本要求:以字符序列的形式從終端上輸入語法正確的、不含變量的整數(shù)表達(dá)式。利用教材中給出的算符優(yōu)先關(guān)系,實現(xiàn)對算術(shù)四則混合運(yùn)算表達(dá)式的求值,并仿照教材例3-1演示在求值中運(yùn)算符棧、運(yùn)算數(shù)棧、輸入字符和主要操作的變化過程。 *實現(xiàn)提示:(1)設(shè)置運(yùn)算棧和運(yùn)算數(shù)棧輔助分析算符優(yōu)先關(guān)系。(2)在輸入表達(dá)式的字符序列的同時,完成運(yùn)算符和運(yùn)算數(shù)(整數(shù))的識別處理,以及相應(yīng)的運(yùn)算。(3)在識別出運(yùn)算數(shù)的同時,要將其字符序列形式轉(zhuǎn)換成整數(shù)形式。 *選作內(nèi)容:(1)擴(kuò)充運(yùn)算符集,如增加乘方、單目減、賦值等運(yùn)算;(2)運(yùn)算量可以是變量;(3)運(yùn)算量可以是實數(shù)類型;(4)計數(shù)器的功能和仿鎮(zhèn)界面。 22.稀疏矩陣運(yùn)算器 *問題描述:稀疏矩陣是指那些多數(shù)元素為0的矩陣。利用“稀疏”特點進(jìn)行存儲和計算可以大大節(jié)省存儲空間,提高計算效率。實現(xiàn)一個能進(jìn)行稀疏矩陣基本原酸的運(yùn)算器。 *基本要求:以“帶行邏輯鏈接信息”的三元組順序表示稀疏矩陣,實現(xiàn)兩個矩陣相加、相減和相乘的運(yùn)算。稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)構(gòu)的矩陣則以通常的陣列形式列出。 *實現(xiàn)提示:(1)首先應(yīng)輸入矩陣的行數(shù)和列數(shù),并判別給出的兩個矩陣的行、列數(shù)對于所要求作的運(yùn)算是否匹配。可設(shè)矩陣的行數(shù)和列數(shù)均不超過20。(2)程序可以對三元組的輸入順序加以限制,例如,按行優(yōu)先。注意研究教科書中的算法,以便提高計算效率。(3)在用三元組表示稀疏矩陣時,相加或相減所得結(jié)果矩陣應(yīng)該另生成,乘積矩陣也可以用二維數(shù)組存放。23.圖書管理 *問題描述:圖書管理基本業(yè)務(wù)活動包括:對一本書的采編入庫、清除庫存、借閱和歸還等等。試設(shè)計一個圖書管理系統(tǒng),將上述業(yè)務(wù)活動借助于計算機(jī)系統(tǒng)完成。 *基本要求:(1)每種書的登記內(nèi)容至少包括書號、書名、作者、現(xiàn)存量和總庫存量等五4。(2)作為演示系統(tǒng),不必使用文件,全部數(shù)據(jù)可以都在內(nèi)存存放。但是由于上述四項基本業(yè)務(wù)活動都是通過書號(即關(guān)鍵字)進(jìn)行的,所以要用B樹對書號盡力索引,以獲得高效率。(3)系統(tǒng)應(yīng)實現(xiàn)的操作及功能定義如下:①采編入庫:新購入一種書,經(jīng)分類和確定書號后登記到圖書帳目中去。如果這種書在帳目中已有,則只將總庫存量增加。②清除庫存:某種書已無保留價值,將它從圖書帳目中注銷。③某種書的現(xiàn)存量大于零,則借出一本,登記借閱者的圖書證號和歸還期限。④歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。⑤顯示:以凹入表的形式顯示B樹。這個操作是為了調(diào)試和維護(hù)的目的而設(shè)置的。下列B樹的打印格式如下所示: 50,52 70,72 8 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》教學(xué)大綱 Data Structure Course Design 一、課程的性質(zhì)、教學(xué)目的和要求 《數(shù)據(jù)結(jié)構(gòu)》是計算機(jī)軟件的一門基礎(chǔ)課程,計算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要用到各種類型的數(shù)據(jù)結(jié)構(gòu)。學(xué)好數(shù)據(jù)結(jié)構(gòu)對掌握實際編程能力是很有幫助的。為了學(xué)好《數(shù)據(jù)結(jié)構(gòu)》,必須編寫一些在特定數(shù)據(jù)結(jié)構(gòu)上的算法,通過上機(jī)調(diào)試,才能更好地掌握各種數(shù)據(jù)結(jié)構(gòu)及其特點,同時提高解決計算機(jī)應(yīng)用實際問題的能力。 二、設(shè)計要點 1.設(shè)計和調(diào)試過程要規(guī)范化。① 需求分析 將題目中要求的功能進(jìn)行敘述分析,并且設(shè)計解決此問題的數(shù)據(jù)存儲結(jié)構(gòu),(有些題目已經(jīng)指定了數(shù)據(jù)存儲的,按照指定的設(shè)計),設(shè)計或敘述解決此問題的算法,描述算法建議使用流程圖,進(jìn)行算法分析指明關(guān)鍵語句的時間復(fù)雜度。 給出實現(xiàn)功能的一組或多組測試數(shù)據(jù),程序調(diào)試后,將按照此測試數(shù)據(jù)進(jìn)行測試的結(jié)果列出來。 對有些題目提出算法改進(jìn)方案,比較不同算法的優(yōu)缺點。 如果程序不能正常運(yùn)行,寫出實現(xiàn)此算法中遇到的問題,和改進(jìn)方法。②源程序(可以是一組源程序,即詳細(xì)設(shè)計部分) 源程序要按照寫程序的規(guī)則來編寫。要結(jié)構(gòu)清晰,重點函數(shù)的重點變量,重點功能部分要加上清晰的程序注釋。 程序能夠運(yùn)行,要有基本的容錯功能。盡量避免出現(xiàn)操作錯誤時出現(xiàn)死循環(huán)。 2.課程設(shè)計實習(xí)報告的書寫格式 ① 設(shè)計題目(任選其一)②運(yùn)行環(huán)境(軟、硬件環(huán)境)③算法設(shè)計的思想 ④算法的流程圖 ⑤算法設(shè)計分析 ⑥源代碼 ⑦運(yùn)行結(jié)果分析 ⑧收獲及體會 3.實施方式 可設(shè)2-3人一題,安排在《數(shù)據(jù)結(jié)構(gòu)》課程開課學(xué)期布置題目,然后在期末前兩周完成。 三.設(shè)計要求 學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時間,安排好課設(shè)的時間計劃,并在課設(shè)過程中不斷檢測自己的計劃完成情況,及時的向教師匯報。課程設(shè)計按照教學(xué)要求需要1周時間完成,1周中每天至少要上6-8小時的機(jī)來調(diào)試C語言設(shè)計的程序,總共至少要上機(jī)調(diào)試程序30小時。為保證質(zhì)量,需要每個學(xué)生將每天的上機(jī)調(diào)試程序的時間記錄下來,作為評判成績的標(biāo)準(zhǔn)之一。 四.設(shè)計題目 1、校園導(dǎo)游程序 [問題描述] 用無向網(wǎng)表示你所在學(xué)校的校園景點平面圖,圖中頂點表示主要景點,存放景點的編號、名稱、簡介等信息,圖中的邊表示景點間的道路,存放路徑長度等信息。要求能夠回答有關(guān)景點介紹、游覽路徑等問題。 [基本要求](1)查詢各景點的相關(guān)信息; (2)查詢圖中任意兩個景點間的最短路徑。 (3)查詢圖中任意兩個景點間的所有路徑。 (4)增加、刪除、更新有關(guān)景點和道路的信息。 [選作內(nèi)容] (1)求多個景點的最佳(最短)游覽路徑。 (2)區(qū)分機(jī)動車道和人行道。 (3)實現(xiàn)導(dǎo)游圖的仿真界面。 2、算術(shù)表達(dá)式求值 [問題描述] 一個算術(shù)表達(dá)式是由操作數(shù)(operand)、運(yùn)算符(operator)和界限符(delimiter)組成的。假設(shè)操作數(shù)是正整數(shù),運(yùn)算符只含加減乘除等四種運(yùn)算符,界限符有左右括號和表達(dá)式起始、結(jié)束符“#”,如:#(7+15)*(23-28/4)#。引入表達(dá)式起始、結(jié)束符是為了方便。編程利用“算符優(yōu)先法”求算術(shù)表達(dá)式的值。 [基本要求] (1)從鍵盤讀入一個合法的算術(shù)表達(dá)式,輸出正確的結(jié)果。 (2)顯示輸入序列和棧的變化過程。 [選作內(nèi)容] 擴(kuò)充運(yùn)算符集合。 引入變量操作數(shù)。 操作數(shù)類型擴(kuò)充到實數(shù)。 3、文學(xué)研究助手 [問題描述] 文學(xué)研究人員需要統(tǒng)計某篇英文小說中某些形容詞的出現(xiàn)次數(shù)和位置。試寫一個實現(xiàn)這一目標(biāo)的文字統(tǒng)計系統(tǒng),稱為“文學(xué)研究助手”。[基本要求] 英文小說存于一個文本文件中。待統(tǒng)計的詞匯集合要一次輸入完畢,即統(tǒng)計工作必須在程序的一次運(yùn)行之后就全部完成。程序的輸出結(jié)果是每個詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在行的行號,格式自行設(shè)計。[測試數(shù)據(jù)] 以你的源程序模擬英文小說,程序語言保留字集作為待統(tǒng)計的詞匯集。[實現(xiàn)提示] 設(shè)小說中的詞匯一律不跨行。這樣,每讀入一行,就統(tǒng)計每個詞在這行中的出現(xiàn)次數(shù)。出現(xiàn)位置所在行的行號可以用鏈表存儲。若某行中出現(xiàn)了不止一次,不必存多個相同的行號。 如果讀者希望達(dá)到選作部分(1)和(2)所提出的要求,則首先應(yīng)把KMP算法改寫成如下的等價形式,再將它推廣到多個模式的情形。[選作內(nèi)容] (1)模式匹配要基于KMP算法。 (2)整個統(tǒng)計過程中只對小說文字掃描一遍以提高效率。 (3)假設(shè)小說中的每個單詞或者從行首開始,或者前置以一個空格符。利用單詞匹配特點另寫一個高效的統(tǒng)計程序,與KMP算法統(tǒng)計程序進(jìn)行效率比較。 (4)推廣到更一般的模式集匹配問題,并設(shè)待查模式串可以跨行(提示:定義操作getachar) 4.迷宮求解 [問題描述] 可以輸入一個任意大小的迷宮數(shù)據(jù),用非遞歸的方法求出一條走出迷宮的路徑,并將路徑輸出; [基本要求] 含有兩個以上的迷宮圖,由用戶選擇哪一張迷宮圖; 實現(xiàn)深度優(yōu)先、廣度優(yōu)先兩種回溯法。 在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、源程序、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法; [實現(xiàn)提示] 可以用一個二維數(shù)組存儲迷宮圖,值為1或者0分別表示通路和不通; 搜索路徑可以參考樹的深度優(yōu)先和廣度優(yōu)先算法。 5.括號匹配的檢驗 [問題描述] 假設(shè)表達(dá)式中允許有兩種括號:圓括號和方括號,其嵌套的順序隨意,即CC或[([ ] [ ])]等為正確格式,[(])或(((]均為不正確的格式。檢驗括號是否匹配的方法可用“期待的緊迫程度”這個概念來描述。例如:考慮下列的括號序列: [([ ] [ ])] 8 當(dāng)計算機(jī)接受了第1個括號以后,他期待著與其匹配的第8個括號的出現(xiàn),然而等來的卻是第2個括號,此時第1個括號“[”只能暫時靠邊,而迫切等待與第2個括號相匹配的 第7個括號“)”的出現(xiàn),類似的,因只等來了第3個括號“[”,此時,其期待的緊迫程度較第2個括號更緊迫,則第2個括號只能靠邊,讓位于第3個括號,顯然第3個括號的期待緊迫程度高于第2個括號,而第2個括號的期待緊迫程度高于第1個括號;在接受了第4個括號之后,第3個括號的期待得到了滿足,消解之后,第2個括號的期待匹配就成了最急迫的任務(wù)了,??,依次類推。可見這個處理過程正好和棧的特點相吻合。 [基本要求] 設(shè)置一個棧,每讀入一個括號,若是左括號,則作為一個新的更急迫的期待壓入棧中,若是右括號,則或者是和當(dāng)前棧頂?shù)睦ㄌ栂嗥ヅ洌蛘呤遣缓戏ǖ那闆r,輸出“此串括號匹配不合法”。在初始和結(jié)束時,棧應(yīng)該是空的。 [測試數(shù)據(jù)] 輸入 #([ ]())#,結(jié)果“匹配” 輸入 #[()]#,結(jié)果“此串括號匹配不合法” #為起始和結(jié)束標(biāo)志。 6.停車場管理 [問題描述] 設(shè)停車場內(nèi)只有一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)時間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場內(nèi)某輛車要離開時,在它之后開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進(jìn)入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進(jìn)行管理的模擬程序。[測試數(shù)據(jù)] 設(shè)n=2,輸入數(shù)據(jù)為:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達(dá)”或“離去”信息、汽車牌照號碼及到達(dá)或離去的時刻,其中,‘A’表示到達(dá);‘D’表示離去,‘E’表示輸入結(jié)束。[基本要求] 以棧模擬停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達(dá)”或“離去”信息、汽車牌照號碼及到達(dá)或離去的時刻,對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車離去;則輸出汽車在停車場內(nèi)停留的時間和應(yīng)交納的費用(在便道上停留的時間不收費)。棧以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表實現(xiàn)。[實現(xiàn)提示] 需另設(shè)一個棧,臨時停放為給要離去的汽車讓路而從停車場退出來的汽車,也用順序存儲結(jié)構(gòu)實現(xiàn)。輸入數(shù)據(jù)按到達(dá)或離去的時刻有序。棧中每個元素表示一輛汽車,包含兩個數(shù)據(jù)項:汽車的牌照號碼和進(jìn)入停車場的時刻。[選作內(nèi)容] (1)兩個棧共享空間,思考應(yīng)開辟數(shù)組的空間是多少? (2)汽車可有不同種類,則它們的占地面積不同,收費標(biāo)準(zhǔn)也不同,如1輛客車和1.5輛小汽車的占地面積相同,1輛十輪卡車占地面積相當(dāng)于3輛小汽車的占地面積。 (3)汽車可以直接從便道上開走,此時排在它前面的汽車要先開走讓路,然后再依次排到隊尾。 (4)停放在便道上的汽車也收費,收費標(biāo)準(zhǔn)比停放在停車場的車低,請思考如何修改結(jié)構(gòu)以滿足這種要求。 7.簡單行編輯程序 [問題描述] 文本編輯程序是利用計算機(jī)進(jìn)行文字加工的基本軟件工具,實現(xiàn)對文本文件的插入、刪除等修改操作。限制這些操作以行為單位進(jìn)行的編輯程序稱為行編輯程序。 被編輯的文本文件可能很大,全部讀入編輯程序的數(shù)據(jù)空間(內(nèi)存)的做法既不經(jīng)濟(jì),也不總能實現(xiàn)。一種解決方法是逐段地編輯。任何時刻只把待編輯文件的一段放在內(nèi)存,稱為活區(qū)。試按照這種方法實現(xiàn)一個簡單的行編輯程序。設(shè)文件每行不超過320個字符,很少超過80字符。[基本要求] 實現(xiàn)以下4條基本編輯命令: (1)行插入。格式:i<行號><回車><文本><回車> 將<文本>插入活區(qū)中第<行號>行之后 (2)行刪除。格式:d<行號1>[□<行號2>]<回車> 刪除活區(qū)中第<行號1>行(到第<行號2>行)。兩種格式的例子是:“d10↙”和“d10□14↙” (3)活區(qū)切換。格式:n<回車> 將活區(qū)寫入輸出文件,并從輸入文件中讀入下一段,作為新的活區(qū)。 (4)活區(qū)顯示。格式:p<回車> 逐頁地(每頁20行)顯示活區(qū)內(nèi)容,每顯示一頁之后請用戶決定是否繼續(xù)顯示以后各頁(如果存在)。印出的每一行要前置以行號和一個空格符,行號固定占4位,增量為1。 各條命令中的行號均須在活區(qū)中各行行號范圍之內(nèi),只有插入命令的行號可以等于活區(qū)第一行行號減1,表示插入當(dāng)前屏幕中第一行之前,否則命令參數(shù)非法。[測試數(shù)據(jù)] 由學(xué)生依據(jù)軟件工程的測試技術(shù)自己確定。注意測試邊界數(shù)據(jù),如首行、尾行。[實現(xiàn)提示] (1)設(shè)活區(qū)的大小用行數(shù)activemaxlen(可設(shè)為100)來描述。考慮到文本文件行長通常為正態(tài)分布,且峰值在60到70之間,用320×activemaxlen大小的字符數(shù)組實現(xiàn)存儲將造成大量浪費。可以以標(biāo)準(zhǔn)行塊為單位為各行分配存儲,每個標(biāo)準(zhǔn)行塊含81個字符。這些行塊可以組成一個數(shù)組,也可以利用動態(tài) 8 鏈表連接起來。一行文字可能占多個行塊。行尾可用一個特殊的ASCII字符(如(012)8)標(biāo)識。此外,還應(yīng)記住活區(qū)起始行號。行插入將引起隨后各行行號的順序下推。 (2)初始化過程包括:請用戶提供輸入文件名(空串表示無輸入文件)和輸出文件名,兩者不能相同。然后盡可能多地從輸入文件中讀入各行,但不超過activemaxlen-x。x的值可以自定,例如20。 (3)在執(zhí)行行插入命令的過程中,每接收到一行時到要檢查活區(qū)大小是否已達(dá)activemaxlen。如果是,則為了在插入這一行之后仍保持活區(qū)大小不超過activemaxlen,應(yīng)將插入點之前的活區(qū)部分中第一行輸出到輸出文件中;若插入點為第一行之前,則只得將新插入的這一行輸出。 (4)若輸入文件尚未讀完,活區(qū)切換命令可將原活區(qū)中最后幾行留在活區(qū)頂部,以保持閱讀連續(xù)性;否則,它意味著結(jié)束編輯或開始編輯另一個文件。 (5)可令前三條命令執(zhí)行后自動調(diào)用活區(qū)顯示。[選作內(nèi)容] (1)對于命令格式非法等一切錯誤作嚴(yán)格檢查和適當(dāng)處理。 (2)加入更復(fù)雜的編輯操作,如對某行進(jìn)行串替換;在活區(qū)內(nèi)進(jìn)行模式匹配等,格式可以為S<行號>@<串1>@<串2><回車>和m<串><回車>。 8.圖遍歷的演示 [問題描述] 很多涉及圖上操作的算法都是以圖的遍歷操作為基礎(chǔ)的。試寫一個程序,演示無向圖的遍歷操作。[基本要求] 以鄰接表為存儲結(jié)構(gòu),實現(xiàn)連通無向圖的深度優(yōu)先和廣度優(yōu)先遍歷。以用戶指定的結(jié)點為起點,分別輸出每種遍歷下的結(jié)點訪問序列和相應(yīng)生成樹的邊集。[測試數(shù)據(jù)] 由學(xué)生依據(jù)軟件工程的測試技術(shù)自己確定。注意測試邊界數(shù)據(jù),如單個結(jié)點。[實現(xiàn)提示] 設(shè)圖的結(jié)點不超過30個,每個結(jié)點用一個編號表示(如果一個圖有n個結(jié)點,則它們的編號分別為1,2,?,n)。通過輸入圖的全部邊輸入一個圖,每個邊為一個數(shù)對,可以對邊的輸入順序作出某種限制。注意,生成樹的邊是有向邊,端點順序不能顛倒。 [選作內(nèi)容] (1)借助于棧類型(自己定義和實現(xiàn))將深度優(yōu)先遍歷用非遞歸算法實現(xiàn)。 (2)以鄰接多重表為存儲結(jié)構(gòu)建立深度優(yōu)先生成樹和廣度優(yōu)先生成樹,再按凹入表或樹形打印生成樹 (3)實現(xiàn)有向圖的遍歷操作。 9、赫夫曼樹的建立 *問題描述:建立建立最優(yōu)二叉樹函數(shù) *要求:可以建立函數(shù)輸入二叉樹,并輸出其赫夫曼樹 在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、輸入輸出、源程序、測試數(shù)據(jù)和結(jié)果、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法; 10、圖的建立及輸出 *問題描述:建立圖的存儲結(jié)構(gòu)(圖的類型可以是有向圖、無向圖、有向網(wǎng)、無向網(wǎng),學(xué)生可以任選兩種類型),能夠輸入圖的頂點和邊的信息,并存儲到相應(yīng)存儲結(jié)構(gòu)中,而后輸出圖的鄰接矩陣。 11、各種排序 *問題描述:對30000個隨機(jī)整數(shù),利用插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序等排序方法進(jìn)行排序,并統(tǒng)計每一種排序上機(jī)所花費的時間。 *輸入的數(shù)據(jù)形式為任何一個正整數(shù),大小不限。*輸出的形式:數(shù)字大小逐個遞增的數(shù)列? 12、圖的遍歷 *問題描述:對任意給定的圖(頂點數(shù)和邊數(shù)自定),建立它的鄰接表并輸出,然后利用隊列的五種基本運(yùn)算(置空隊列、進(jìn)隊、出隊、取隊頭元素、判隊空)實現(xiàn)圖的廣度優(yōu)先搜索周游。 13、線性表的操作 *問題描述:利作鏈表的插入運(yùn)算建立線性鏈表,然后利用鏈表的查找、刪除、計數(shù)、輸出等運(yùn)算反復(fù)實現(xiàn)鏈表的這些操作(插入、刪除、查找、計數(shù)、輸出單獨寫成函數(shù)的形式),并能在屏幕上輸出操作前后的結(jié)果。 14、編制一個求解迷宮通路的圖形界面演示程序。*問題描述: 1)輸入一個任意大小的迷宮,任設(shè)起點、終點、障礙,用棧求出一條走出迷宮的路徑,并顯示在屏幕上。 2)根據(jù)用戶界面提示,用鍵盤輸入。Home鍵設(shè)置迷宮起點,End鍵設(shè)終點,上下左右箭頭鍵移動,Enter鍵添加墻,Del鍵刪除墻,完成后按F9鍵演示,Esc鍵退出。 3)橙色的實心小圓圈表示起點,綠色實心圓圈表示終點,空心圓圈表示足跡,紅色方塊表示墻。4)本程序只求出一條成功的通路,但若對求解函數(shù)MazePath稍加更改即可求得全部路徑。此外,因受圖形界面限制,不能保存或載入測試文件(此功能可在Maze_text中實現(xiàn))。 5)當(dāng)未輸入起點時,消息顯示“Error: You must set Startplace.”;未輸入終點時,顯示“Error: You must set Endplace.” 找到路徑時,屏幕顯示足跡,并在消息框出現(xiàn)Path found,否則消去足跡,顯示Path not found.15.一元稀疏多項式計算器 *問題描述:一元多項式簡單計算器的基本功能是:(1)輸入并建立多項式;(2)輸出多項式,輸出形式為整數(shù)序列n,c1,e1,c2,e2,?,cn,en,其中n是多項式的項數(shù),ci和ei分別是第I項的系數(shù)和指數(shù),序列指指數(shù)降序排列;(3)多項式a和b相加,建立多項式a+b;(4)多項式a和b相減,建立多項式a-b。*實現(xiàn)提示:用帶頭結(jié)點的單鏈表存儲多項式,多項式的項數(shù)存在頭結(jié)點。 16.算術(shù)表達(dá)式求值演示 *問題描述:表達(dá)式求值是實現(xiàn)程序設(shè)計語言的基本問題之一,也是棧的應(yīng)用的一個典型例子。設(shè)計一個程序,演示用算符優(yōu)先法對算術(shù)表達(dá)式求值的過程。 *基本要求:以字符序列的形式從終端上輸入語法正確的、不含變量的整數(shù)表達(dá)式。利用教材中給出的算符優(yōu)先關(guān)系,實現(xiàn)對算術(shù)四則混合運(yùn)算表達(dá)式的求值,并仿照教材例3-1演示在求值中運(yùn)算符棧、運(yùn)算數(shù)棧、輸入字符和主要操作的變化過程。 *實現(xiàn)提示:(1)設(shè)置運(yùn)算棧和運(yùn)算數(shù)棧輔助分析算符優(yōu)先關(guān)系。(2)在輸入表達(dá)式的字符序列的同時,完成運(yùn)算符和運(yùn)算數(shù)(整數(shù))的識別處理,以及相應(yīng)的運(yùn)算。(3)在識別出運(yùn)算數(shù)的同時,要將其字符序列形式轉(zhuǎn)換成整數(shù)形式。 *選作內(nèi)容:(1)擴(kuò)充運(yùn)算符集,如增加乘方、單目減、賦值等運(yùn)算;(2)運(yùn)算量可以是變量;(3)運(yùn)算量可以是實數(shù)類型;(4)計數(shù)器的功能和仿鎮(zhèn)界面。 17.稀疏矩陣運(yùn)算器 *問題描述:稀疏矩陣是指那些多數(shù)元素為0的矩陣。利用“稀疏”特點進(jìn)行存儲和計算可以大大節(jié)省存儲空間,提高計算效率。實現(xiàn)一個能進(jìn)行稀疏矩陣基本原酸的運(yùn)算器。 *基本要求:以“帶行邏輯鏈接信息”的三元組順序表示稀疏矩陣,實現(xiàn)兩個矩陣相加、相減和相乘的運(yùn)算。稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)構(gòu)的矩陣則以通常的陣列形式列出。 *實現(xiàn)提示:(1)首先應(yīng)輸入矩陣的行數(shù)和列數(shù),并判別給出的兩個矩陣的行、列數(shù)對于所要求作的運(yùn)算是否匹配。可設(shè)矩陣的行數(shù)和列數(shù)均不超過20。(2)程序可以對三元組的輸入順序加以限制,例如,按行優(yōu)先。注意研究教科書中的算法,以便提高計算效率。(3)在用三元組表示稀 疏矩陣時,相加或相減所得結(jié)果矩陣應(yīng)該另生成,乘積矩陣也可以用二維數(shù)組存放。18.圖書管理 *問題描述:圖書管理基本業(yè)務(wù)活動包括:對一本書的采編入庫、清除庫存、借閱和歸還等等。試設(shè)計一個圖書管理系統(tǒng),將上述業(yè)務(wù)活動借助于計算機(jī)系統(tǒng)完成。 *基本要求:(1)每種書的登記內(nèi)容至少包括書號、書名、作者、現(xiàn)存量和總庫存量等五4。(2)作為演示系統(tǒng),不必使用文件,全部數(shù)據(jù)可以都在內(nèi)存存放。但是由于上述四項基本業(yè)務(wù)活動都是通過書號(即關(guān)鍵字)進(jìn)行的,所以要用B樹對書號盡力索引,以獲得高效率。(3)系統(tǒng)應(yīng)實現(xiàn)的操作及功能定義如下:①采編入庫:新購入一種書,經(jīng)分類和確定書號后登記到圖書帳目中去。如果這種書在帳目中已有,則只將總庫存量增加。②清除庫存:某種書已無保留價值,將它從圖書帳目中注銷。③某種書的現(xiàn)存量大于零,則借出一本,登記借閱者的圖書證號和歸還期限。④歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。⑤顯示:以凹入表的形式顯示B樹。這個操作是為了調(diào)試和維護(hù)的目的而設(shè)置的。下列B樹的打印格式如下所示: 19、文章編輯 *問題描述:輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行。 *要求(1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。 *存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應(yīng)的功能; *輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點符號。 *輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出“全部字母數(shù)”、“數(shù)字個數(shù)”、“空格個數(shù)”、“文章總字?jǐn)?shù)”(3)輸出刪除某一字符串后的文章; 50,52 70,72 20、回文判斷 [問題描述] 試寫一個算法,判斷依次讀入的一個以@為結(jié)束符的字母序列,是否為形如‘序列1 & 序列2’模式的字符序列。其中序列1和序列2 中都不含字符‘&’,且序列2 是序列1的逆序列。例如,‘a(chǎn)+b&b+a’是屬該模式的字符序列,而‘1+3&3-1’則不是。[實現(xiàn)提示] 首先,序列1進(jìn)棧,然后序列1出棧并與序列2比較。 21、建立二叉樹,層序、先序遍歷(用遞歸或非遞歸的方法都可以)*問題描述: 要求能夠輸入樹的各個結(jié)點,并能夠輸出用不同方法遍歷的遍歷序列;分別建立建立二叉樹存儲結(jié)構(gòu)的的輸入函數(shù)、輸出層序遍歷序列的函數(shù)、輸出先序遍歷序列的函數(shù); 五、參考書目 《數(shù)據(jù)結(jié)構(gòu) C語言》 嚴(yán)蔚敏 清華大學(xué)出版社 《c語言程序設(shè)計》 譚浩強(qiáng) 清華大學(xué)出版社 《數(shù)據(jù)結(jié)構(gòu)》 高教出版社 《數(shù)據(jù)結(jié)構(gòu)習(xí)題》 李春保 清華大學(xué)出版社 《數(shù)據(jù)結(jié)構(gòu)習(xí)題》 嚴(yán)蔚敏 清華大學(xué)出版社 《c語言與數(shù)據(jù)結(jié)構(gòu)》 王立柱 清華大學(xué)出版社 《數(shù)據(jù)結(jié)構(gòu)(C語言篇)習(xí)題與解析》李春葆 清華大學(xué)出版社 計算機(jī)軟件教研室 2004年1月7日 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》教學(xué)大綱 課程名稱: 課程編號: 適用專業(yè): 總 學(xué) 分: 總 學(xué) 時: 其中實驗學(xué)時 主 撰 人: 撰寫日期: 一、目的與任務(wù) 《數(shù)據(jù)結(jié)構(gòu)》是計算機(jī)軟件的一門基礎(chǔ)課程,計算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要用到各種類型的數(shù)據(jù)結(jié)構(gòu)。學(xué)好數(shù)據(jù)結(jié)構(gòu)對掌握實際編程能力是很有幫助的。為了學(xué)好《數(shù)據(jù)結(jié)構(gòu)》,必須編寫一些在特定數(shù)據(jù)結(jié)構(gòu)上的算法,通過上機(jī)調(diào)試,才能更好地掌握各種數(shù)據(jù)結(jié)構(gòu)及其特點,同時提高解決計算機(jī)應(yīng)用實際問題的能力。 二、教學(xué)基本要求 1.設(shè)計和調(diào)試過程要規(guī)范化 需求分析:將題目中要求的功能進(jìn)行敘述分析,并且設(shè)計解決此問題的數(shù)據(jù)存儲結(jié)構(gòu),(有些題目已經(jīng)指定了數(shù)據(jù)存儲的,按照指定的設(shè)計),設(shè)計或敘述解決此問題的算法,描述算法建議使用流程圖,進(jìn)行算法分析指明關(guān)鍵語句的時間復(fù)雜度。 給出實現(xiàn)功能的一組或多組測試數(shù)據(jù),程序調(diào)試后,將按照此測試數(shù)據(jù)進(jìn)行測試的結(jié)果列出來。 對有些題目提出算法改進(jìn)方案,比較不同算法的優(yōu)缺點。 如果程序不能正常運(yùn)行,寫出實現(xiàn)此算法中遇到的問題,和改進(jìn)方法。②源程序(可以是一組源程序,即詳細(xì)設(shè)計部分) 源程序要按照寫程序的規(guī)則來編寫。要結(jié)構(gòu)清晰,重點函數(shù)的重點變量,重點功能部分要加上清晰的程序注釋。 程序能夠運(yùn)行,要有基本的容錯功能。盡量避免出現(xiàn)操作錯誤時出現(xiàn)死循環(huán)。2.課程設(shè)計實習(xí)報告的書寫格式 ① 設(shè)計題目 數(shù)據(jù)結(jié)構(gòu) 408104 計算機(jī)科學(xué)與技術(shù) 72 30 2012.6 436104 軟件工程 審 核 人: ②運(yùn)行環(huán)境(軟、硬件環(huán)境)③算法設(shè)計的思想 ④算法的流程圖 ⑤算法設(shè)計分析 ⑥源代碼 ⑦運(yùn)行結(jié)果分析 ⑧收獲及體會 3.實施方式 可設(shè)3-4人一題,安排在《數(shù)據(jù)結(jié)構(gòu)》課程開課學(xué)期布置題目,然后在期末兩周時間內(nèi)完成。 4.答辯:課題的論述、測試及問題回答 三、課程設(shè)計內(nèi)容 1、背包問題的求解: 假設(shè)有一個能裝入總體積為T的背包和n件體積分別為w1 , w2 , … , wn 的物品,能否從n件物品中挑選若干件恰好裝滿背包,即使w1 +w2 + … + wn=T,要求找出所有滿足上述條件的解。例如:當(dāng)T=10,各件物品的體積{1,8,4,3,5,2}時,可找到下列4組解:(1,4,3,2),(1,4,5),(8,2),(3,5,2)。 提示:可利用回溯法的設(shè)計思想來解決背包問題。首先將物品排成一列,然后順序選取物品裝入背包,假設(shè)已選取了前i 件物品之后背包還沒有裝滿,則繼續(xù)選取第i+1件物品,若該件物品“太大”不能裝入,則棄之而繼續(xù)選取下一件,直至背包裝滿為止。但如果在剩余的物品中找不到合適的物品以填滿背包,則說明“剛剛”裝入背包的那件物品“不合適”,應(yīng)將它取出“棄之一邊”,繼續(xù)再從“它之后”的物品中選取,如此重復(fù),直至求得滿足條件的解,或者無解。 由于回溯求解的規(guī)則規(guī)則是“后進(jìn)先出”因此自然要用到棧。 2、訂票系統(tǒng)(1)問題描述 通過此系統(tǒng)可以實現(xiàn)如下功能: 1)錄入: 可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)2)查詢: 可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達(dá)城市,航班票價,票價折扣,確定航班是否滿倉); 可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況; 3)訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班; 4)退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。 5)修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件(2)要求 根據(jù)以上功能說明,設(shè)計航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計程序完成功能; 3、迷宮求解(1)問題描述 可以輸入一個任意大小的迷宮數(shù)據(jù),用非遞歸的方法求出一條走出迷宮的路徑,并將路徑輸出;(2)要求 在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、源程序、測試數(shù)據(jù)和結(jié)果、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法; 4、dijkstra算法求最短路徑 問題描述:從鍵盤上輸入一個圖的基本信息(圖用鄰矩陣表示) 1)首先輸入圖的結(jié)點數(shù)->num 2)依次輸入圖的各條邊 3)程序所能達(dá)到的功能:輸出用dijkstra算法求出的一條最短路徑。 5、joseph環(huán)(1)問題描述 編號是1,2,??,n的n個人按照順時針方向圍坐一圈,每個人只有一個密碼(正整數(shù))。一開始任選一個正整數(shù)作為報數(shù)上限值m,從第一個仍開始順時針方向自1開始順序報數(shù),報到m時停止報數(shù)。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數(shù),如此下去,直到所有人全部出列為止。設(shè)計一個程序來求出出列順序。(2)要求 利用單向循環(huán)鏈表存儲結(jié)構(gòu)模擬此過程,按照出列的順序輸出各個人的編號。(3)測試數(shù)據(jù): m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什么? (4)輸入數(shù)據(jù):建立輸入處理輸入數(shù)據(jù),輸入m的初值,n,輸入每個人的密碼,建立單循環(huán)鏈表。 (5)輸出形式:建立一個輸出函數(shù),將正確的輸出序列 6、建立二叉樹,層序、先序遍歷(用遞歸或非遞歸的方法都可以)(1)問題描述:建立二叉樹,并實行層序、先序遍歷等算法 (2)要求:能夠輸入樹的各個結(jié)點,并能夠輸出用不同方法遍歷的遍歷序列;分別建立建立二叉樹存儲結(jié)構(gòu)的的輸入函數(shù)、輸出層序遍歷序列的函數(shù)、輸出先序遍歷序列的函數(shù); 7、赫夫曼樹的建立 (1)問題描述:建立建立最優(yōu)二叉樹函數(shù) (2)要求:可以建立函數(shù)輸入二叉樹,并輸出其赫夫曼樹 在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、輸入輸出、源程序、測試數(shù)據(jù)和結(jié)果、算法的時間復(fù)雜度、另外可以提出算法的改進(jìn)方法; 8、圖的建立及輸出 (1)問題描述:建立圖的存儲結(jié)構(gòu)(圖的類型可以是有向圖、無向圖、有向網(wǎng)、無向網(wǎng),學(xué)生可以任選兩種類型) (2)要求:能夠輸入圖的頂點和邊的信息,并存儲到相應(yīng)存儲結(jié)構(gòu)中,而后輸出圖的鄰接矩陣。 9、拓?fù)渑判?/p> (1)問題描述:編寫函數(shù)實現(xiàn)圖的拓?fù)渑判颉#?)要求:能夠以一定的方式輸入數(shù)據(jù)結(jié)點 10、各種排序 (1)問題描述:對30000個隨機(jī)整數(shù),利用插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序等排序方法進(jìn)行排序,并統(tǒng)計每一種排序上機(jī)所花費的時間。(2)要求:輸入的數(shù)據(jù)形式為任何一個正整數(shù),大小不限。 輸出的形式:數(shù)字大小逐個遞增的數(shù)列 11、圖的遍歷 對任意給定的圖(頂點數(shù)和邊數(shù)自定),建立它的鄰接表并輸出,然后利用隊列的五種基本運(yùn)算(置空隊列、進(jìn)隊、出隊、取隊頭元素、判隊空)實現(xiàn)圖的廣度優(yōu)先搜索周游。 12、線性表的操作 利用鏈表的插入運(yùn)算建立線性鏈表,然后利用鏈表的查找、刪除、計數(shù)、輸出等運(yùn)算反復(fù)實現(xiàn)鏈表的這些操作(插入、刪除、查找、計數(shù)、輸出單獨寫成函數(shù)的形式),并能在屏幕上輸出操作前后的結(jié)果。 13、長整數(shù)四則運(yùn)算 *問題描述:設(shè)計一個實現(xiàn)任意長的整數(shù)進(jìn)行加法運(yùn)算的演示程序。*基本要求:利用雙向循環(huán)鏈表實現(xiàn)長整數(shù)的存儲,每個結(jié)點含一個整形變量。任何整形變量的范圍是-(2^151)。輸入和輸出形式:按中國對于長整數(shù)的表示習(xí)慣,每四位一組,組間用逗號隔開。*測試數(shù)據(jù): (1)0;0;應(yīng)輸出“0”。 (2)-2345,6789;-7654,3211;應(yīng)輸出“-1,0000,0000”。(3)-9999,9999;1,0000,0000,0000;應(yīng)輸出“999(4)1,0001,0001;-1,0001,0001;應(yīng)輸出“0”。(5)1,0001,0001;-1,0001,0000;應(yīng)輸出“1”。 (6)-9999,9999,9999;-9999,9999,9999;應(yīng)輸出“1,9999,9999,9998”。(7)1,0000,9999,9999;1;應(yīng)輸出“1,0001,0000,0000”。*實現(xiàn)提示: (1)每個結(jié)點中可以存放的最大整數(shù)為32767,才能保證兩數(shù)相加不會溢出,但若這樣存放,即相當(dāng)于按32768進(jìn)制存放,在十進(jìn)制與32768進(jìn)制數(shù)之間的轉(zhuǎn)換十分不方便,故可以在每個結(jié)點中僅存十進(jìn)制的4位,即不超過9999的非負(fù)整數(shù),整個鏈表表示為萬進(jìn)制。 (2)可以利用頭結(jié)點數(shù)據(jù)域的符號代表長整數(shù)的符號。用其絕對值表示元素結(jié) 點數(shù)目。相加過程中不要破壞兩個操作數(shù)鏈表。兩操作數(shù)的頭指針存于指針數(shù)組中是簡化程序結(jié)構(gòu)的一種方法。不能給長整數(shù)位數(shù)規(guī)定上限。 14、克魯斯?fàn)査惴ㄇ笞钚∩蓸?/p> 問題描述:從鍵盤上輸入一個圖的基本信息(圖用鄰矩陣表示) 1)首先輸入圖的結(jié)點數(shù)->num 2)依次輸入圖的各條邊 3)程序所能達(dá)到的功能:能夠輸出這個圖的一棵最小生成樹 15、算術(shù)表達(dá)式求值演示 (1)問題描述:表達(dá)式求值是實現(xiàn)程序設(shè)計語言的基本問題之一,也是棧的應(yīng)用的一個典型例子。設(shè)計一個程序,演示用算符優(yōu)先法對算術(shù)表達(dá)式求值的過程。(2)基本要求:以字符序列的形式從終端上輸入語法正確的、不含變量的整數(shù)表達(dá)式。利用教材中給出的算符優(yōu)先關(guān)系,實現(xiàn)對算術(shù)四則混合運(yùn)算表達(dá)式的求值,并仿照教材例3-1演示在求值中運(yùn)算符棧、運(yùn)算數(shù)棧、輸入字符和主要操作的變化過程。 16.稀疏矩陣運(yùn)算器 *問題描述:稀疏矩陣是指那些多數(shù)元素為0的矩陣。利用“稀疏”特點進(jìn)行存儲和計算可以大大節(jié)省存儲空間,提高計算效率。實現(xiàn)一個能進(jìn)行稀疏矩陣基本原酸的運(yùn)算器。 *基本要求:以“帶行邏輯鏈接信息”的三元組順序表示稀疏矩陣,實現(xiàn)兩個矩陣相加、相減和相乘的運(yùn)算。稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)構(gòu)的矩陣則以通常的陣列形式列出。 *實現(xiàn)提示:(1)首先應(yīng)輸入矩陣的行數(shù)和列數(shù),并判別給出的兩個矩陣的行、列數(shù)對于所要求作的運(yùn)算是否匹配。可設(shè)矩陣的行數(shù)和列數(shù)均不超過20。(2)程序可以對三元組的輸入順序加以限制,例如,按行優(yōu)先。注意研究教科書中的算法,以便提高計算效率。(3)在用三元組表示稀疏矩陣時,相加或相減所得結(jié)果矩陣應(yīng)該另生成,乘積矩陣也可以用二維數(shù)組存放。 四、時間安排 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》安排在第三學(xué)期進(jìn)行,時間2周(17-18周)。 五、組織管理 1.由院、系指派經(jīng)驗豐富的專業(yè)教師擔(dān)任指導(dǎo)教師。 2.課程設(shè)計實行指導(dǎo)教師負(fù)責(zé)制,由指導(dǎo)教師全面負(fù)責(zé)課程設(shè)計的指導(dǎo)與管理工作。 六、成績考核與評定 學(xué)生課程設(shè)計結(jié)束后寫出總結(jié)報告,對設(shè)計的內(nèi)容和效果進(jìn)行總結(jié),按照學(xué)生在設(shè)計期間的表現(xiàn),指導(dǎo)老師對每位學(xué)生寫出評語和鑒定,系課程設(shè)計領(lǐng)導(dǎo)小組組織答辯,最后確定每位學(xué)生課程設(shè)計成績,課程設(shè)計成績分為優(yōu)、良、中、及格和不及格五個等級。 課程設(shè)計成績?yōu)槠綍r表現(xiàn)30%、設(shè)計報告50%、答辯20%。評分標(biāo)準(zhǔn): ① 優(yōu)秀:目的明確,態(tài)度端正,模范遵守學(xué)校的各項紀(jì)律。工作認(rèn)真,積極 主動,吃苦耐勞,能出色的完成設(shè)計任務(wù)。撰寫了高質(zhì)量的總結(jié)報告。答辯準(zhǔn)確流利。 ② 良好:目的明確,態(tài)度端正,能遵守學(xué)校的各項紀(jì)律,工作比較積極主動。能較好地完成設(shè)計任務(wù),成績較突出,表現(xiàn)良好;撰寫了質(zhì)量比較高的實習(xí)報告。答辯較準(zhǔn)確流利。 ③ 及格:目的明確,態(tài)度基本端正,能遵守學(xué)校紀(jì)律,在督促下能開展工作 并完成一定的設(shè)計任務(wù),無大的違紀(jì)違規(guī)現(xiàn)象;撰寫了實習(xí)報告。通過了答辯。 ④ 不及格:實習(xí)態(tài)度端正,不能遵守實習(xí)單位的紀(jì)律,不服從領(lǐng)導(dǎo),自由散漫,工作消極被動,不能完成實習(xí)任務(wù),實習(xí)期間有失職、曠工、打架、酗酒等大的過失。或無實習(xí)報告,沒有通過答辯。 2.成績評定 依據(jù)上述考核內(nèi)容,最后采用優(yōu)(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五級記分制評定學(xué)生課程設(shè)計成績。 七、主要參考資料 《數(shù)據(jù)結(jié)構(gòu) C語言》 嚴(yán)蔚敏 清華大學(xué)出版社 2006.2 《c語言程序設(shè)計》 譚浩強(qiáng) 清華大學(xué)出版社 2010.8 《數(shù)據(jù)結(jié)構(gòu)習(xí)題》 李春保 清華大學(xué)出版社 2006.4 《數(shù)據(jù)結(jié)構(gòu)習(xí)題》 嚴(yán)蔚敏 清華大學(xué)出版社 2006.2 《c語言與數(shù)據(jù)結(jié)構(gòu)》 王立柱 清華大學(xué)出版社 2010.6 《數(shù)據(jù)結(jié)構(gòu)(C語言篇)習(xí)題與解析》李春葆 清華大學(xué)出版社2006.4第四篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計教學(xué)大綱
第五篇:《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》教學(xué)大綱