每個(gè)人都曾試圖在平淡的學(xué)習(xí),、工作和生活中寫一篇文章,。寫作是培養(yǎng)人的觀察、聯(lián)想,、想象,、思維和記憶的重要手段,。那么我們該如何寫一篇較為完美的范文呢?下面是小編為大家收集的優(yōu)秀范文,,供大家參考借鑒,,希望可以幫助到有需要的朋友。
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)摘要篇一
一,、《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》的目標(biāo)
課程設(shè)計(jì)是《數(shù)據(jù)結(jié)構(gòu)》課程的一個(gè)重要的實(shí)踐環(huán)節(jié),,它可加深學(xué)生對(duì)該課程所學(xué)內(nèi)容的進(jìn)一步的理解與鞏固,達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,,提高學(xué)生組織數(shù)據(jù)及編寫大型程序的能力,,培養(yǎng)基本的對(duì)基本數(shù)據(jù)結(jié)構(gòu)的理解和運(yùn)用,良好的程序設(shè)計(jì)方法,、提高編碼及調(diào)試程序技能的能力,,為整個(gè)專業(yè)的學(xué)習(xí)以及軟件設(shè)計(jì)水平的提高打下良好的基礎(chǔ)。
二,、設(shè)計(jì)內(nèi)容
每位學(xué)生可以從《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)備選題目》中選擇一個(gè)題目自行完成,。要求每班中題目不能重復(fù),。
三、設(shè)計(jì)要求
1.學(xué)生必須仔細(xì)閱讀《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書》,,認(rèn)真主動(dòng)完成課設(shè)的要求。有問題及時(shí)主動(dòng)通過各種方式與指導(dǎo)教師聯(lián)系溝通,。
2.學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,,充分利用時(shí)間,安排好課設(shè)的時(shí)間計(jì)劃,,并在課設(shè)過程中不斷檢測自己的計(jì)劃完成情況,,及時(shí)向教師匯報(bào)。
3.課程設(shè)計(jì)按照教學(xué)要求需要兩周時(shí)間完成,,學(xué)院安排設(shè)計(jì)時(shí)
間學(xué)生不得缺席,。
4,、每位學(xué)生必須認(rèn)真,、獨(dú)立完成設(shè)計(jì)任務(wù),發(fā)現(xiàn)抄襲者或雷同者,,一律按零分處理,。
5、程序設(shè)計(jì)語言可選擇c或c++,。
6,、程序要正確且具有一定的健壯性,,不會(huì)因?yàn)橛脩舻妮斎脲e(cuò)誤引起程序運(yùn)行錯(cuò)誤而中斷執(zhí)行,對(duì)輸入值的類型,、大小范圍,、字符串的長度等,進(jìn)行正確性檢查,,對(duì)不合法的輸入值給出出錯(cuò)信息,,指出錯(cuò)誤類型,等待重新輸入,。
四,、上交相關(guān)內(nèi)容要求
上交的成果的內(nèi)容必須由以下三個(gè)部分組成,缺一不可,。
1. 上交源程序:學(xué)生按照課程設(shè)計(jì)的具體要求所開發(fā)的所有源程序(應(yīng)該放到一個(gè)文件夾中),;
2. 上交程序的說明文件:(中)在說明文檔中應(yīng)該寫明上交程序所在的目錄,上交程序的主程序文件名,,如果需要安裝,,要有程序的安裝使用說明;
3. 課程設(shè)計(jì)報(bào)告:(保存在word 文檔中,,文件名要求按照“學(xué)號(hào)_姓名_課程設(shè)計(jì)報(bào)告題目”起名,,如文件名為“001_張三_二叉樹動(dòng)態(tài)演示”.doc)。報(bào)告要求文字工整通順,、圖表規(guī)范,、思路清楚、內(nèi)容正確,。設(shè)計(jì)報(bào)告必須按照規(guī)定格式規(guī)范,,a4紙雙面打印、裝訂,。
將以上三個(gè)部分放在一個(gè)文件夾里,,文件夾名要求按照"學(xué)號(hào)_姓名_課程設(shè)計(jì)報(bào)告題目”.zip命名。每個(gè)班將所有學(xué)生的文件夾收集起來刻成光盤上交,。
五,、時(shí)間安排
設(shè)計(jì)時(shí)間為兩周(7.07—7.18),7月16日—7月18日答辯,??己朔绞?/p>
成績按五分制,包括課程設(shè)計(jì)過程,、課程設(shè)計(jì)結(jié)果,、課程設(shè)計(jì)報(bào)告三部分。其中:
課程設(shè)計(jì)過程:20%
包括設(shè)計(jì)態(tài)度(10分)、出勤(10分)
課程設(shè)計(jì)結(jié)果:40%
其中:程序正確性:30分,,運(yùn)行效果:10分,,答辯:10分。課程設(shè)計(jì)報(bào)告:40%
其中:正確性:20分,,完整性:10分,,規(guī)范性:10分。
六,、設(shè)計(jì)報(bào)告格式
見《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告模板》,。
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)摘要篇二
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目
1.成績管理
問題描述:給出n個(gè)學(xué)生的考試成績表,成績表包括學(xué)生的學(xué)號(hào),、姓名、考試成績(高等數(shù)
學(xué),、英語,、物理),設(shè)計(jì)一個(gè)簡單的成績管理程序,。
基本要求:
(1)建立成績表,,能夠插入、刪除,、修改學(xué)生的成績記錄,;(2)按任一單科成績排序;(3)計(jì)算每名學(xué)生的平均成績,;
(4)統(tǒng)計(jì)任一單科成績不及格的學(xué)生人數(shù), 輸出不及格人數(shù)及不及格的學(xué)生名單(5)根據(jù)平均成績將成績表按由高到低的次序排列,,統(tǒng)計(jì)每名學(xué)生在考試中獲得的名次,分?jǐn)?shù)相同的為同一名次,,按名次輸出成績表,。
(6)成績表保存在文件中, 可以從文件讀取數(shù)據(jù)。
測試數(shù)據(jù):學(xué)生可以根據(jù)自己班級(jí)的考試成績單,,任意截取一部分做為測試數(shù)據(jù) 2.一元多項(xiàng)式簡單計(jì)算
問題描述:設(shè)計(jì)一個(gè)簡單一元多項(xiàng)式計(jì)算器,。基本要求:(1)輸入并建立多項(xiàng)式,;(2)輸出多項(xiàng)式,;
(3)兩個(gè)多項(xiàng)式相加,輸出結(jié)果多項(xiàng)式,;(4)兩個(gè)多項(xiàng)式相減,,輸出結(jié)果多項(xiàng)式。
提高要求:可以根據(jù)輸入變量的值,,計(jì)算出多項(xiàng)式的結(jié)果,,且算法的效率高。測試數(shù)據(jù):可任意選取兩個(gè)一元多項(xiàng)式,可以是一般的多項(xiàng)式,,也可以是稀疏多項(xiàng)式,。3.舞伴問題
問題描述:一班有m個(gè)女生、n個(gè)男生(m不等于n), 舉辦一場舞會(huì).男女生分別編號(hào)坐在舞池兩邊的椅子上,,每曲開始時(shí), 依次從男生和女生中各出一人配對(duì)跳舞, 本曲沒成功配對(duì)者坐著等待下一曲找舞伴,,設(shè)計(jì)一個(gè)程序模擬舞伴配對(duì)過程。
基本要求:輸入男,、女學(xué)生的姓名,、性別,由程序自動(dòng)為男女生編號(hào),,可以順序編號(hào),,也可以隨機(jī)編號(hào),輸出每曲配對(duì)情況(包括男,、女生的姓名,、性別和編號(hào))。原始數(shù)據(jù)和結(jié)果數(shù)據(jù)要保存到文件中,。
測試數(shù)據(jù):分別選擇男生多于女生,、女生多于男生、男女生相等的三組測試數(shù)據(jù) 提高要求:計(jì)算出任意一位男生(編號(hào)為x)和任意一位女生(編號(hào)為y), 在第k曲配對(duì)跳舞的情況,。
4.文學(xué)研究助手(*)
問題描述:文學(xué)研究人員需要統(tǒng)計(jì)某篇英文小說中某些形容詞的出現(xiàn)次數(shù)和位置,。試寫一個(gè)實(shí)現(xiàn)這一目標(biāo)的文字統(tǒng)計(jì)系統(tǒng),稱為“文學(xué)研究助手”,?;疽螅河⑽男≌f存于一個(gè)文本文件中,待統(tǒng)計(jì)的詞匯集合要一次輸入完畢,,即統(tǒng)計(jì)工作必須在程序的一次運(yùn)行之后就全部完成,。程序的輸出結(jié)果是每個(gè)詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在行的行號(hào),格式自行設(shè)計(jì), 結(jié)果保存到文件中,。
提高要求:模式匹配選取kmp算法
測試數(shù)據(jù):以你的c/c++/java源程序模擬英文小說,,相應(yīng)語言的保留字集作為待統(tǒng)計(jì)的詞匯集。
5.哈希表的設(shè)計(jì)與實(shí)現(xiàn)(*)
問題描述:針對(duì)某個(gè)單位電話號(hào)碼簿,,設(shè)計(jì)一個(gè)哈希表,,并完成相應(yīng)的建表和查表程序?;疽螅涸O(shè)每個(gè)記錄有下列數(shù)據(jù)項(xiàng):電話號(hào)碼,、用戶名、住址,。從鍵盤輸入各記錄,,以用戶名為關(guān)鍵字建立哈希表,哈希函數(shù)用除留取余數(shù)法構(gòu)造,采用線性探測法解決沖突,??梢圆迦搿⒉檎?、刪除并顯示給定用戶名的記錄,,并計(jì)算查找長度, 哈希表保存到文件中。
測試數(shù)據(jù):取某個(gè)單位電話號(hào)碼簿中的30個(gè)記錄,。
提高要求:將電話號(hào)碼薄以文件形式保存到盤上,,能夠按用戶名和電話號(hào)碼兩種形式建立哈希表并實(shí)現(xiàn)插入、查找,、刪除表中元素的功能,。
6.管道鋪設(shè)施工的最佳方案(*)
問題描述:需要在某個(gè)城市的n個(gè)小區(qū)鋪設(shè)管道,則在這n個(gè)小區(qū)之間鋪設(shè)n-1條管道即可,,假設(shè)任意兩個(gè)居民區(qū)之間都可以架設(shè)管道,,但由于地理環(huán)境的不同,所需經(jīng)費(fèi)不同,,選擇最優(yōu)的施工方案使總投資盡可能的少。
基本要求:輸入表示小區(qū)間關(guān)系的圖及每條管道的權(quán)值,,選擇出n-1條管道, 使總投資最小,。圖的信息輸入一次后, 保存到文件中, 選擇的n-1條管道輸出到顯示器的同時(shí), 也保存于文件中。
測試用例:任意選擇一個(gè)圖,,模擬小區(qū)間可能鋪設(shè)的管道及費(fèi)用,。提高要求:顯示原始圖及選擇n-1條管道后的圖。
7.安排教學(xué)計(jì)劃(**)
問題描述:大學(xué)的每個(gè)專業(yè)都要制定教學(xué)計(jì)劃,。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,,每學(xué)年含兩個(gè)學(xué)期,每學(xué)期的時(shí)間長度和學(xué)分上限值均相等,。每個(gè)專業(yè)開設(shè)的課程都是確定的,,而且課程在開設(shè)時(shí)間的安排上必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,,可以有任意多門,,也可以沒有。每門課程恰好占一個(gè)學(xué)期,。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序,。
基本要求:輸入?yún)?shù)包括學(xué)期總數(shù),一學(xué)期的學(xué)分上限,,每門課程的課程號(hào),、學(xué)分和直接先修課的課程號(hào);允許兩種策略,一是使學(xué)生在各學(xué)期的學(xué)習(xí)負(fù)擔(dān)盡量均勻,,二是使課程盡量集中在前幾個(gè)學(xué)期,;若根據(jù)給定的條件問題無解,則報(bào)告適當(dāng)?shù)男畔?,否則將教學(xué)計(jì)劃輸出到用戶指定的文件中,。教學(xué)計(jì)劃的表格格式自行設(shè)定, 可以從鍵盤讀取數(shù)據(jù)也可以從文件讀取數(shù)據(jù), 結(jié)果保存到文件中。
測試數(shù)據(jù):學(xué)期總數(shù)為6,,學(xué)分上限為10,,該專業(yè)共開設(shè)12門。以08級(jí)某專業(yè)必修課與選修課為例,,選擇12門課程及相應(yīng)學(xué)分,,制定一個(gè)表明各門課程先后約束關(guān)系的有向圖。
提高要求:產(chǎn)生多種不同的方案,,并使方案之間的差異盡可能地大,。8.停車場管理程序(**)問題描述:設(shè)停車場內(nèi)只有一個(gè)可停放n輛汽車的狹長通道,且只有一個(gè)大門可供汽車進(jìn)出,。汽車在停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場的最北端),,若車場內(nèi)已停滿n輛汽車,,則后來的汽車只能在門外的便道上等候,一旦有車開走,,則排在便道上的第一輛車即可開入,;當(dāng)停車場內(nèi)某輛車要離開時(shí),在它之后開入的車輛必須先退出車場為它讓路,,待該輛車開出大門外,,其它車輛再按原次序進(jìn)入車場,每輛停放在車場的車在它離開停車場時(shí)必須按它停留的時(shí)間長短交納費(fèi)用,。試為停車場編制按上述要求進(jìn)行管理的模擬程序,。
基本要求:每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻,,對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá),,則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車離去,;則輸出汽車在停車場內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi),,單位時(shí)間的停車費(fèi)用由用戶從鍵盤輸入)。
測試數(shù)據(jù):設(shè)輸入數(shù)據(jù)為:(‘a(chǎn)’,,1,,5),,(‘a(chǎn)’,2,,10),,(‘d’,1,,15),,(‘a(chǎn)’,3,,20),,(‘a(chǎn)’,4,,25),,(‘a(chǎn)’,5,,30),,(‘d’,2,,35),,(‘d’,4,,40),,(‘e’,0,,0)。其中,,‘a(chǎn)’表示到達(dá),;‘d’表示離去,‘e’表示輸入結(jié)束,。
提高要求:設(shè)停車場有南,、北兩個(gè)門,每個(gè)門都可以進(jìn),、出車輛,。9.計(jì)算表達(dá)式的值(**)問題描述:對(duì)于給定的一個(gè)表達(dá)式,表達(dá)式中可以包括常數(shù),、算術(shù)運(yùn)行符(“+”,、“-”、“*”,、“/”)和括號(hào),,編寫程序計(jì)算表達(dá)式的值,。
基本要求:從鍵盤輸入一個(gè)正確的中綴表達(dá)式,將中綴表達(dá)式轉(zhuǎn)換為對(duì)應(yīng)的后綴表達(dá)式,,計(jì)算后綴表達(dá)式的值,。
測試數(shù)據(jù):任意選取一個(gè)符合題目要求的表達(dá)式。提高要求:(1)對(duì)于表達(dá)式中的簡單錯(cuò)誤,,能夠給出提示,;
(2)表達(dá)式中可以包括單個(gè)字母表示的變量。
10.設(shè)計(jì)huffman 編碼器與解碼器(***)
問題描述:利用哈夫曼編碼進(jìn)行信息通訊可以大大提高信道的利用率,,縮短信息傳輸時(shí)間,,降低傳輸成本。但是,,這要求在發(fā)送端通過一個(gè)編碼系統(tǒng)對(duì)待傳輸數(shù)據(jù)預(yù)先編碼,;在接受端將傳來的數(shù)據(jù)進(jìn)行譯碼。對(duì)于雙工信道(即可以雙向傳輸信息的信道),,每端都需要一個(gè)完整的編/譯碼系統(tǒng),。試為這樣的信息收發(fā)站編寫一個(gè)哈夫曼碼的編/譯碼系統(tǒng)。
基本要求:根據(jù)某字符文件統(tǒng)計(jì)字符出現(xiàn)頻度,,構(gòu)造huffman 樹,,編制huffman編碼,并將給定字符文件編碼,,生成編碼文件,;再將給定編碼文件解碼,生成字符文件,。(要求按二進(jìn)制位表示編碼)測試數(shù)據(jù):英文文件,。
提高要求:用二進(jìn)制表示編碼,生成二進(jìn)制的編碼文件,。11.銀行業(yè)務(wù)模擬(***)
問題描述:設(shè)銀行有四個(gè)服務(wù)窗口,,一個(gè)等待隊(duì)列, 每個(gè)窗口均可以辦理存款、取款,、掛失,、還貸業(yè)務(wù),每種業(yè)務(wù)所需的服務(wù)時(shí)間不同,,客戶到達(dá)銀行后,,先到打號(hào)機(jī)上打號(hào),號(hào)票上包括到達(dá)時(shí)間,、編號(hào)和需要辦理的業(yè)務(wù),,然后在銀行內(nèi)等候, 當(dāng)任一服務(wù)窗口空閑時(shí),處理等候客戶中排在最前面的客戶的業(yè)務(wù)。寫一個(gè)上述銀行業(yè)務(wù)的模擬系統(tǒng),通過模擬方法求出客戶在銀行內(nèi)逗留的平均時(shí)間和每個(gè)窗口辦理的客戶數(shù)及辦理的每種業(yè)務(wù)數(shù),。
基本要求:每個(gè)客戶到達(dá)銀行的時(shí)間和需要辦理的業(yè)務(wù)隨機(jī)產(chǎn)生,,輸出一天客戶在銀行的平均逗留時(shí)間和每個(gè)窗口每天辦理的客戶數(shù)和每種業(yè)務(wù)數(shù),。
測試數(shù)據(jù):營業(yè)時(shí)間為8小時(shí),其他模擬量自行設(shè)定,。12.程序源代碼的相似性(***)
問題描述:對(duì)于兩個(gè)c++語言的源程序代碼,,用哈希表的方法分別統(tǒng)計(jì)兩個(gè)程序中使用c++語言關(guān)鍵字的情況,并最終按定量的計(jì)算結(jié)果,,得出兩份程序的相似性,。
基本要求:建立c++語言關(guān)鍵字的哈希表,統(tǒng)計(jì)在每個(gè)源程序中c++關(guān)鍵字出現(xiàn)的頻度, 得到兩個(gè)向量x1和x2,,通過計(jì)算向量x1和x2的相對(duì)距離來判斷兩個(gè)源程序的相似性,。
例如: 關(guān)鍵字 void int for char if else while do break class 程序1關(guān)鍵字頻度 4 3 0 4 3 0 7 0 0 2 程序2關(guān)鍵字頻度 4 2 0 5 4 0 5 2 0 1 x1=[4,3,0,4,3,0,7,0,0,2] x2=[4,2,0,5,4,0,5,2,0,1] 設(shè)s是向量x1和x2的相對(duì)距離,s=sqrt(∑(xi1-xi2)2),,當(dāng)x1=x2時(shí),,s=0, 反映出可能是同一個(gè)程序;s值越大,,則兩個(gè)程序的差別可能也越大,。
測試數(shù)據(jù): 選擇若干組編譯和運(yùn)行都無誤的c++程序,程序之間有相近的和差別大的,,用上述方法求s, 對(duì)比兩個(gè)程序的相似性,。
提高要求:建立源代碼用戶標(biāo)識(shí)符表,比較兩個(gè)源代碼用戶標(biāo)識(shí)符出現(xiàn)的頻度,,綜合關(guān)鍵字頻度和用戶標(biāo)識(shí)符頻度判斷兩個(gè)程序的相似性,。
13.小型文本編輯器
問題描述:設(shè)計(jì)一個(gè)行編輯程序,使其具有通常行編輯器(如vi,、edlin)應(yīng)具備的基本功能,。
基本要求:編輯器應(yīng)具備對(duì)文本文件的查找、插人,、刪除,、修改、字符串替換,、統(tǒng)計(jì)字?jǐn)?shù),,統(tǒng)計(jì)行數(shù)等功能,,對(duì)于超過一屏的長文件,,應(yīng)能夠分頁顯示,查找功能用字符串匹配算法實(shí)現(xiàn),。設(shè)計(jì)用戶接口命令,,實(shí)現(xiàn)對(duì)文本的編輯。具體的編輯命令,,可參考數(shù)據(jù)結(jié)構(gòu)算法網(wǎng)絡(luò)教學(xué)平臺(tái)上提供的edlin,、vi的命令集,。
測試數(shù)據(jù):任一文本文件。
提高要求:1.可以支持“* ”,、“? ”等通配符,;
2.支持復(fù)制、粘貼等功能
3.支持多文檔同時(shí)編輯,;
提示:可以考慮用雙向鏈表實(shí)現(xiàn),,每一結(jié)點(diǎn)表示一行字符,注意每行字符不能超過255,。14.小型英漢詞典
問題描述:設(shè)計(jì)一個(gè)英漢詞典,,支持member(查找),、insert(插入)、delete(刪除)操作。
基本要求:實(shí)現(xiàn)字典的常用方法有:有序線性表(memeber用二分檢索實(shí)現(xiàn)),、avl樹(二叉搜索樹)、patricia trie,、散列表等,,任選一種方法實(shí)現(xiàn)字典的操作,查找單詞,、插入單詞(插入時(shí),,先查找,找不到插入,,找到提示用戶),、刪除單詞(刪除時(shí),先查找,,找到刪除,,找不到提示用戶)。
測試數(shù)據(jù):任一英文單詞,。提高要求:選用兩種以上的方法實(shí)現(xiàn)字典的操作,,并比較不同實(shí)現(xiàn)算法的時(shí)間復(fù)雜度和空間復(fù)雜度。
提示:字典可以自己建立,,但必須按字母a~z建立26個(gè)文件,,建議從網(wǎng)上下載,文件類型為txt,。
備注:
1.每道題目后面的*號(hào),,表示題目的難度系數(shù);對(duì)應(yīng)的評(píng)定成績等級(jí)為及格(無*號(hào)),、中等(*號(hào)),、良好(**號(hào))、優(yōu)秀(***號(hào)),,學(xué)生完成題目的基本要求,,即可得到程序設(shè)計(jì)部分的相應(yīng)等級(jí)成績,,完成題目提高要求,成績可以向上浮動(dòng),,如果沒有完成基本要求,,成績向下浮動(dòng),直至不及格,。
2.所有題目均需用c++完成,,不能用c或mfc。3.實(shí)驗(yàn)班的學(xué)生原則上應(yīng)選擇“*”號(hào)多的題目,。4.每道題的選題人數(shù)不能超過3人
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)摘要篇三
《數(shù)據(jù)結(jié)構(gòu)與算法》課程設(shè)計(jì)教學(xué)大綱(data structures & algorithms)
一,、基本信息
課程編號(hào):e1132107 課程類別:學(xué)科基礎(chǔ)課必修課 適用層次:本科
適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程,、軟件工程等 開課學(xué)期:3 學(xué) 分:2學(xué)分 學(xué) 時(shí):2周 考核方式:考查
二,、教學(xué)目的
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)不僅是數(shù)據(jù)結(jié)構(gòu)與算法課程的實(shí)踐教學(xué)環(huán)節(jié),而且是一門綜合性實(shí)驗(yàn)項(xiàng)目,。通過這個(gè)實(shí)驗(yàn),,培養(yǎng)學(xué)生綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)基本知識(shí)和程序設(shè)計(jì)基本知識(shí),解決實(shí)際問題,,提高程序設(shè)計(jì)的能力和團(tuán)隊(duì)協(xié)作精神,。
本課程設(shè)計(jì)的目的就是要達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,使同學(xué)們能夠根據(jù)數(shù)據(jù)對(duì)象的特性,,學(xué)會(huì)數(shù)據(jù)組織的方法,,能把現(xiàn)實(shí)世界中的實(shí)際問題在計(jì)算機(jī)內(nèi)部表示出來,并培養(yǎng)基本的,、良好的程序設(shè)計(jì)技能,。
1.學(xué)生通過實(shí)踐掌握線性表、樹,、圖等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及算法實(shí)現(xiàn),; 2.培養(yǎng)學(xué)生利用數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問題的能力;3.使學(xué)生初步具備查閱資料、分析設(shè)計(jì),、上機(jī)實(shí)現(xiàn)和書寫科技 報(bào)告的能力,。
三、基本要求
1.指導(dǎo)教師要在選題,、設(shè)計(jì),、上機(jī)實(shí)現(xiàn)等諸環(huán)節(jié)上投入精力,加強(qiáng)指導(dǎo),、討論和答疑的力度,。尤其在選題上,,要充分考慮學(xué)生目前所具有的知識(shí)水平,、掌握的開發(fā)工具,、以及綜合設(shè)計(jì)能力的現(xiàn)狀,使題目取材合理,、大小適中,、難易適度,使學(xué)生在完成設(shè)計(jì)工作后,,能有所收獲,。2.參加課程設(shè)計(jì)的學(xué)生要珍惜機(jī)會(huì)、勤奮工作,、勇于創(chuàng)新,、勇于探索、勇于實(shí)踐,,虛心向指導(dǎo)教師請教,,向同學(xué)學(xué)習(xí),獨(dú)立完成設(shè)計(jì)任務(wù),。
3.學(xué)生需保質(zhì),、保量、保時(shí)間進(jìn)度地提交規(guī)范的課程設(shè)計(jì)報(bào)告,,審查由指導(dǎo)教師負(fù)責(zé),。
四、教學(xué)內(nèi)容
1.主要內(nèi)容:應(yīng)用所掌握的線性表,、樹,、圖等數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問題。2.軟件開發(fā)工具:c/c++,、java,。
3.課程設(shè)計(jì)題目:指導(dǎo)教師擬定(參考題目見附錄1)
4.具體步驟:指導(dǎo)教師擬定設(shè)計(jì)題目,學(xué)生研究具體問題,、進(jìn)行需求分析,、選擇合適的數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法,、編寫并調(diào)試代碼,、書寫文檔材料、提交設(shè)計(jì)報(bào)告,,最后,,由指導(dǎo)教師驗(yàn)收并評(píng)定成績。
5.設(shè)計(jì)內(nèi)容及時(shí)間安排:第1-3天,,選定題目,,明確題目要求、確定數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法,,并分析算法復(fù)雜度,;第4-8天,編寫程序,、調(diào)試程序,、測試程序;第9-10天,,撰寫設(shè)計(jì)報(bào)告,,準(zhǔn)備答辯(上機(jī)演示,回答教師提問),。6.設(shè)計(jì)報(bào)告書寫要求:按照軟件開發(fā)規(guī)范的要求書寫設(shè)計(jì)報(bào)告(參見附錄三報(bào)告書寫格式),;要求報(bào)告層次結(jié)構(gòu)清晰、圖表完整,、語言通順,、字跡工整。7.驗(yàn)收要求:1)運(yùn)行所設(shè)計(jì)的程序,;2)回答有關(guān)問題,;3)提交課程設(shè)計(jì)報(bào)告(打印或手寫在實(shí)習(xí)報(bào)告冊上);4)提交軟盤(源程序),。(鼓勵(lì)學(xué)生創(chuàng)新,。對(duì)內(nèi)容有創(chuàng)新者,成績評(píng)定將適當(dāng)提高),。
五,、考核方法
學(xué)習(xí)成績的評(píng)定方式:考查。
課程設(shè)計(jì)成績評(píng)定 =平時(shí)出勤(20%)+設(shè)計(jì)報(bào)告(40%)+答辯(40%)通過設(shè)計(jì)答辯方式,,并結(jié)合學(xué)生的動(dòng)手能力,,獨(dú)立分析解決問題的能力和創(chuàng)新精神,總結(jié)報(bào)告和答辯水平以及學(xué)習(xí)態(tài)度綜合考評(píng),。成績分為優(yōu),、良、中,、及格和不及格五等,。
六、教材與參考資料 1.建議教材:
[1] 數(shù)據(jù)結(jié)構(gòu)(c++)版,,王紅梅,、胡明、王濤編著,,清華大學(xué)出版社,,2005.7 [2] 自編教材
2.建議參考書目:
[1] 許卓群,,楊冬青,唐世渭,,張銘.數(shù)據(jù)結(jié)構(gòu)與算法.高等教育出版社,,2004.7 [2] 嚴(yán)蔚敏, 陳文博.數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程.清華大學(xué)出版社, 2001.2 [3] 朱晉蜀.數(shù)據(jù)結(jié)構(gòu)(第一版).成都: 電子科技大學(xué)出版社, 2000.1 [4] clifford r著.張銘,劉曉丹譯.數(shù)據(jù)結(jié)構(gòu)與算法分析.電子工業(yè)出版社,,1998.8 [5] 殷人昆等.數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcc++描述).清華大學(xué)出版社,1999.7 [6] ford w., topp structures with c++.清華大學(xué)出版社(影印版),,1997.3
附錄一
參考題目(可分若干組,,每個(gè)學(xué)生選擇其中一個(gè)題目)
1.商廈家電庫存管理 2.排序算法的時(shí)間比較
3.使用哈希表技術(shù)判斷兩個(gè)源程序的相似性 4.以隊(duì)列實(shí)現(xiàn)的仿真技術(shù)預(yù)測理發(fā)館的經(jīng)營狀況 5.某公園導(dǎo)游圖
6.用樹型結(jié)構(gòu)的搜索算法模擬因特網(wǎng)域名的查詢 7.管道鋪設(shè)施工的最佳方案選擇 8.表達(dá)式分析與求值程序 9.安排教學(xué)計(jì)劃
10.設(shè)計(jì)huffman 編碼器與解碼器 11.在國際象棋盤上馬遍歷問題 12.八皇后問題 13.民航售票系統(tǒng) 14.模擬旅館管理系統(tǒng)中的床位分配和加收 15.銀行業(yè)務(wù)活動(dòng)的模擬
16.文字統(tǒng)計(jì)系統(tǒng)—文字研究助手 17.修道士野人問題 18.考試問題
19.計(jì)算機(jī)輔助考核系統(tǒng) 20.學(xué)籍管理系統(tǒng)
注:學(xué)生可以自選題目或選擇指導(dǎo)老師擬定的題目。
附錄二
開發(fā)步驟
1.分析題目的要求,、目的,; 2.選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu);
3.抽象數(shù)據(jù)類型的設(shè)計(jì),; 4.抽象數(shù)據(jù)類型的實(shí)現(xiàn),; 5.編寫代碼、上機(jī)調(diào)試,; 6.總結(jié)驗(yàn)收,、評(píng)價(jià)。
附錄三 報(bào)告書寫格式
1.問題描述
題目內(nèi)容,、基本要求 2.需求分析
軟件的基本功能,、輸入/輸出形式、測試數(shù)據(jù)要求 3.概要設(shè)計(jì)
所需的adt及作用,、主程序流程及模塊調(diào)用關(guān)系 4.詳細(xì)設(shè)計(jì)
實(shí)現(xiàn)概要設(shè)計(jì)的數(shù)據(jù)類型,、每個(gè)操作的偽碼算法、主程序和其它模塊的偽碼算法,、函數(shù)調(diào)用關(guān)系圖 5.編碼與調(diào)試分析
編碼與調(diào)試過程中遇到的問題及解決的辦法,,還存在哪些沒有解決的問題? 6.使用說明
簡要說明程序運(yùn)行操作步驟 7.測試結(jié)果
8.課程設(shè)計(jì)心得體會(huì)
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)摘要篇四
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)教學(xué)任務(wù)書
一,、課程設(shè)計(jì)的目的
數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中所出現(xiàn)的計(jì)算機(jī)操作對(duì)象以及它們之間的關(guān)系和操作的學(xué)科,。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)軟件和計(jì)算機(jī)硬件之間的一門計(jì)算機(jī)專業(yè)的核心課程,,它是計(jì)算機(jī)程序設(shè)計(jì),、數(shù)據(jù)庫、操作系統(tǒng),、編譯原理及人工智能等的重要基礎(chǔ),,廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域,。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實(shí)際問題中所涉及的對(duì)象在計(jì)算機(jī)中表示出來并對(duì)它們進(jìn)行處理,。通過課程設(shè)計(jì)可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。通過此次課程設(shè)計(jì)主要達(dá)到以下目的:
? 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,,具備初步的獨(dú)立分析和設(shè)計(jì)能力,; ? 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì),、程序編碼,、測試等基本方法和技能; ? 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力,;
? 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),,培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。
二,、課程設(shè)計(jì)的基本要求
1,、獨(dú)立思考,獨(dú)立完成:每人任選一題,,在課程設(shè)計(jì)中各任務(wù)要求獨(dú)立完成,,遇到問題大家可以相互討論,互相調(diào)試檢查,,但不可以拷貝,。
2、按照課程設(shè)計(jì)的具體要求建立的功能模塊,,每個(gè)模塊要求按照如下幾個(gè)內(nèi)容認(rèn)真完成,;
其中包括:
a)需求分析:
在該部分中敘述,每個(gè)模塊的功能要求
b)概要設(shè)計(jì)
在此說明每個(gè)部分的算法設(shè)計(jì)說明(可以是描述算法的流程圖),,每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說明(如果指定存儲(chǔ)結(jié)構(gòu)請寫出該存儲(chǔ)結(jié)構(gòu)的定義,。
c)詳細(xì)設(shè)計(jì)
各個(gè)算法實(shí)現(xiàn)的源程序(可放在附錄中),對(duì)每個(gè)題目要有相應(yīng)的源程序(可以是一組源程序,,每個(gè)功能模塊采用不同的函數(shù)實(shí)現(xiàn))
源程序要按照寫程序的規(guī)則來編寫,。要結(jié)構(gòu)清晰,重點(diǎn)函數(shù)的重點(diǎn)變量,,重點(diǎn)功能部分要加上清晰的程序注釋,。
d)調(diào)試分析
測試數(shù)據(jù),測試輸出的結(jié)果,,時(shí)間復(fù)雜度分析,,和每個(gè)模塊設(shè)計(jì)和調(diào)試時(shí)存在問題的思考(問題是哪些?問題如何解決,?),,算法的改進(jìn)設(shè)想等。
4,、每人實(shí)現(xiàn)的結(jié)果必須進(jìn)行檢查和演示,;程序源代碼和程序的說明文件必須上交,,作為考核內(nèi)容的一部分;(上交時(shí)每人交一份,,文件夾的取名規(guī)則為:“學(xué)號(hào) 姓名”,,如“11207210188 張麗”。該文件夾下至少包括:“源代碼”和“課程設(shè)計(jì)報(bào)告”,,統(tǒng)一放在服務(wù)器的文件夾“d: / 3
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書
/11級(jí)專升本數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)”中),。
5、課程設(shè)計(jì)報(bào)告要對(duì)重點(diǎn)函數(shù)及結(jié)構(gòu)進(jìn)行說明,。報(bào)告格式參照(報(bào)告示例),。
6、報(bào)告提交
時(shí)間:第16周星期五之前,,遲交無成績,。
形式:課程設(shè)計(jì)報(bào)告(要求書寫課程設(shè)計(jì)報(bào)告)和電子文檔,。
三,、課程設(shè)計(jì)內(nèi)容:
1.大數(shù)相乘問題
例如:輸入第一個(gè)數(shù)為:***172586,輸入第二個(gè)數(shù)為:***7則程序運(yùn)行后輸出***172586****7=正確答案,。2.矩陣的運(yùn)算
采用十字鏈表表示稀疏矩陣,,并實(shí)現(xiàn)矩陣的加減法和乘法運(yùn)算, 要求:要檢查有關(guān)運(yùn)算的條件,并對(duì)錯(cuò)誤的條件產(chǎn)生報(bào)警,。3. 訂票系統(tǒng)
設(shè)計(jì)航班信息,,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完成如下功能:
錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,,數(shù)據(jù)結(jié)構(gòu),、具體數(shù)據(jù)自定)查詢:可以查詢某個(gè)航線的情況(如,輸入航班號(hào),,查詢起降時(shí)間,,起飛抵達(dá)城市,航班票價(jià),,票價(jià)折扣,,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,,查詢飛機(jī)航班情況,;
訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,,如果該航班已經(jīng)無票,,可以提供相關(guān)可選擇航班;
退票: 可退票,,退票后修改相關(guān)數(shù)據(jù)文件,;
客戶資料有姓名,,證件號(hào),訂票數(shù)量及航班情況,,訂單要有編號(hào),。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件 6. 賓館訂房和退房系統(tǒng)
假設(shè)一個(gè)賓館有n個(gè)標(biāo)準(zhǔn)的客房,每個(gè)標(biāo)準(zhǔn)客房有m個(gè)標(biāo)準(zhǔn)間,,利用鏈表,、棧或者隊(duì)列等數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)出具有訂房和退房等功能的管理系統(tǒng),。7. 建立二叉樹和線索二叉樹
分別用以下方法建立二叉樹: 1)用先序遍歷的輸入序列 2)用層次遍歷的輸入序列 3)用先序和中序遍歷的結(jié)果
最后對(duì)所建立的二叉樹進(jìn)行中序線索化,,并對(duì)此線索樹進(jìn)行中序遍歷(不使用棧)。8.校園導(dǎo)航問題
設(shè)計(jì)要求:設(shè)計(jì)你的學(xué)校的平面圖,,至少包括10個(gè)以上的場所,,每兩個(gè)場所間可以有不同的路,且路長也可能不同,,找出從任意場所到達(dá)另一場所的最佳路徑(最短路徑),。9.馬的遍歷問題
設(shè)計(jì)程序完成如下要求:在中國象棋棋盤上,對(duì)任一位置上放置的一個(gè)馬,,均能選擇一個(gè)合適的路線,,使得該棋子能按象棋的規(guī)則不重復(fù)地走過棋盤上的每一位置。
要求:依次輸出所走過的各位置的坐標(biāo),。/ 3
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書
11.設(shè)計(jì)一個(gè)模擬計(jì)算器來完成表達(dá)式的計(jì)算
要求對(duì)包含加,、減、乘,、除,、括號(hào)運(yùn)算符的任意整型表達(dá)式進(jìn)行求解,操作數(shù)可以是多位數(shù),。12.八皇后問題
設(shè)計(jì)程序完成如下要求:在8×8的國際象樣棋盤上,,放置8個(gè)皇后,使得這8個(gè)棋子不能互相被對(duì)方吃掉,。
要求:依次輸出各種成功的放置方法,。13.圖的遍歷過程演示
設(shè)計(jì)程序完成如下功能:對(duì)給定的圖結(jié)構(gòu)和起點(diǎn),產(chǎn)生深度優(yōu)先遍歷和廣度優(yōu)先遍歷序列,,并給出求解過程的動(dòng)態(tài)演示,。14.構(gòu)造n個(gè)城市連接的最小生成樹
一個(gè)地區(qū)的n個(gè)城市間的距離網(wǎng),用prim算法或kruskal算法建立最小生成樹,,并計(jì)算得到的最小生成樹的代價(jià),。基本要求:
1)城市間的距離網(wǎng)采用鄰接矩陣表示,,鄰接矩陣的存儲(chǔ)結(jié)構(gòu)定義采用課本中給出的定義,,若兩個(gè)城市之間不存在道路,,則將相應(yīng)邊的權(quán)值設(shè)為自己定義的無窮大值。要求在屏幕上顯示得到的最小生成樹中包括了哪些城市間的道路,,并顯示得到的最小生成樹的代價(jià),。
2)表示城市間距離網(wǎng)的鄰接矩陣(要求至少6個(gè)城市,10條邊)15. 藥店的藥品銷售統(tǒng)計(jì)系統(tǒng)
設(shè)計(jì)一系統(tǒng),,實(shí)現(xiàn)醫(yī)藥公司定期對(duì)銷售各藥品的記錄進(jìn)行統(tǒng)計(jì),,可按藥品的編號(hào)、單價(jià),、銷售量或銷售額做出排名,。
基本要求:在本設(shè)計(jì)中,首先從數(shù)據(jù)文件中讀出各藥品的信息記錄,,存儲(chǔ)在順序表中,。各藥品的信息包括:藥品編號(hào)、藥名,、藥品單價(jià),、銷出數(shù)量、銷售額,。對(duì)各藥品的藥名,、單價(jià),、銷售量或銷售額進(jìn)行排序時(shí),,可采用多種排序方法,如直接插入排序,、冒泡排序,、快速排序,直接選擇排序,、堆排等方法,。
四、上交作業(yè)及成績評(píng)定
1,、上交要求
上交設(shè)計(jì)報(bào)告和源程序,。其中設(shè)計(jì)報(bào)告要以手寫報(bào)告的形式上交;電子版內(nèi)容包括程序源碼和設(shè)計(jì)報(bào)告的電子文檔,。整個(gè)班級(jí)的設(shè)計(jì)均放在一個(gè)文件夾中,。
2、課程設(shè)計(jì)報(bào)告注意事項(xiàng):
1)運(yùn)行結(jié)果請截圖(alt + prtsc),;
2)系統(tǒng)功能模塊介紹請請采用流程圖形式,; 3)課程設(shè)計(jì)總結(jié)可以從以下幾個(gè)方面書寫 : 課程設(shè)計(jì)的收獲、遇到問題及其解決過程,、程序調(diào)試技巧,、在課程設(shè)計(jì)過程中對(duì)《數(shù)據(jù)結(jié)構(gòu)》課程的認(rèn)識(shí)等內(nèi)容,。
3、評(píng)分標(biāo)準(zhǔn)
根據(jù)完成任務(wù)的情況,、課程設(shè)計(jì)報(bào)告書的質(zhì)量和課程設(shè)計(jì)過程中的工作態(tài)度等按照30%,、50%、20%加權(quán)綜合打分,。成績評(píng)定實(shí)行百分制,。上機(jī)程序檢查未通過者、無設(shè)計(jì)報(bào)告者以及嚴(yán)重抄襲他人設(shè)計(jì)者,,成績?yōu)椴患案瘛?/p>
/ 3
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)摘要篇五
2014/2015學(xué)年第一學(xué)期
《數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)》任務(wù)書
一,、課程設(shè)計(jì)目的
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)是《數(shù)據(jù)結(jié)構(gòu)與算法》課程教學(xué)必不可缺的一個(gè)重要環(huán)節(jié),它可加深學(xué)生對(duì)該課程所學(xué)內(nèi)容的進(jìn)一步的理解與鞏固,,是將計(jì)算機(jī)課程與實(shí)際問題相聯(lián)接的關(guān)鍵步驟,。通過課程設(shè)計(jì),能夠提高學(xué)生分析問題,、解決問題,,從而運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的能力,因而必須給予足夠的重視,。
2二,、課程設(shè)計(jì)題目
2.1 棋盤覆蓋
【間題描述】
在一個(gè)2k×2k 個(gè)方格組成的棋盤中,恰有一個(gè)方格與其它方格不同,,稱該方格為一特殊方格,,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,,要用圖示的4種不同形態(tài)的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,,且任何2個(gè)l型骨牌不得重疊覆蓋。
【基本要求】
(1)輸入k以及特殊方格所在的行號(hào)dr和特殊方格的列號(hào)dc,。
1(2)要求輸出每一步用什么形態(tài)l型骨牌覆蓋,,覆蓋后得到的棋盤圖形。(3)如果輸出的結(jié)果只是用矩陣表示則為良好,,用圖形表示則為優(yōu),。【測試數(shù)據(jù)】 【實(shí)現(xiàn)提示】
使用分治策略,,把棋盤劃分成4個(gè)小棋盤,,然后用一個(gè)l型骨牌覆蓋將這4個(gè)小棋盤變?yōu)槎季哂刑厥夥礁竦钠灞P。
2.2 hanoi塔問題(*)
【問題描述】
設(shè)a,,b,,c是三個(gè)塔座。開始時(shí),,在塔座a上有一疊共n個(gè)圓盤,,這些圓盤自下而上,,由大到小地疊放在一起,各圓盤從小到大編號(hào)為1,2,?,n,,要求將塔座a上的這一疊圓盤移到塔座b上,,并仍按同樣順序疊置。在移動(dòng)圓盤時(shí)應(yīng)遵守以下移動(dòng)規(guī)則:
規(guī)則(1)每次只能移動(dòng)一個(gè)圓盤,;
規(guī)則(2)任何時(shí)刻都部允許將較大的圓盤壓在較小的圓盤之上,;
規(guī)則(3)在滿足移動(dòng)規(guī)則(1)和(2)的前提下,可將圓盤移至a,,b,,c中任一塔座上。
【基本要求】
(1)設(shè)計(jì)出hannoi塔游戲,,供用戶玩,;(2)提供正確的搬運(yùn)方法?!緦?shí)現(xiàn)說明】
正確的搬運(yùn)方法使用遞歸方法實(shí)現(xiàn),。【測試數(shù)據(jù)】
2.3 矩陣連乘問題
【問題描述】
給定n個(gè)矩陣{a1,a2,...,an},其中ai和ai?1是可乘的,,i=1,2,?,n-1,。考察這n個(gè)矩陣的連乘積a1a2,...,an,,通過加括號(hào)方式,,找出矩陣乘積所需的最少計(jì)算量的方法。
【基本要求】
輸入每個(gè)矩陣的行和列,,要求輸出最少計(jì)算量的矩陣乘積方法,,如(a1(a2(a3a4))),?!緦?shí)現(xiàn)說明】 使用動(dòng)態(tài)規(guī)劃方法。
2.4 多邊形游戲(*)
【問題描述】
多邊形游戲是一個(gè)單人玩的游戲,,開始時(shí)有一個(gè)由n個(gè)頂點(diǎn)構(gòu)成的多邊形,。每個(gè)頂點(diǎn)被賦予一個(gè)整數(shù)值,每條邊被賦予一個(gè)運(yùn)算符“+”或“*”,。所有邊依次用整數(shù)從1到n編號(hào),。
游戲第1步,將一條邊刪除,。隨后n-1步按以下方式操作:
選擇一條邊e及由e連接著的2個(gè)頂點(diǎn)v1和v2,;
用一個(gè)新的頂點(diǎn)取代邊e及用e連接著的2個(gè)頂點(diǎn)v1和v2,將由頂點(diǎn)v1和v2的整數(shù)值通過邊e上的運(yùn)算得到的結(jié)果賦予新頂點(diǎn),。
最后,,所有邊都被刪除,,游戲結(jié)束。游戲的得分就是所剩頂點(diǎn)上的整數(shù)值,?!净疽蟆?/p>
設(shè)計(jì)該游戲供用戶玩;
對(duì)于給定的多邊形,,給出最高得分計(jì)算,。【實(shí)現(xiàn)說明】 使用動(dòng)態(tài)規(guī)劃方法,。
2.5 0-1背包問題
【問題描述】
給定n種物品和一背包,。物品i的重量是wi,其價(jià)值為vi,,背包的容量為c,。問應(yīng)如何選擇裝入背包種的物品,使得裝入背包種物品的總價(jià)值最大,。
【基本要求】
使用動(dòng)態(tài)規(guī)劃,、回溯法以及分支界限三種方法實(shí)現(xiàn)?!緶y試數(shù)據(jù)】 【實(shí)現(xiàn)提示】
2.6 排序方法
【問題描述】
給定n個(gè)元素,,要求對(duì)這n個(gè)元素進(jìn)行排序?!净疽蟆?/p>
使用多種排序方法,,越多越好;
比較每種排序方法的時(shí)間復(fù)雜度和空間復(fù)雜度,?!緶y試數(shù)據(jù)】 【實(shí)現(xiàn)提示】
2.7 哈夫曼編碼譯碼器
【問題描述】
設(shè)計(jì)一個(gè)哈夫曼編碼/譯碼系統(tǒng),對(duì)一個(gè)文本文件中的字符進(jìn)行哈夫曼編碼,,生成編碼文件
(壓縮文件,,);反過來,,可將一個(gè)壓縮文件譯碼還原為一個(gè)文本文件(.txt),。
【基本要求】
(1)輸入一個(gè)待壓縮的英文文本文件,統(tǒng)計(jì)文本文件中各字符的個(gè)數(shù)作為權(quán)值,,生成哈夫曼樹,;
(2)將文本文件利用哈夫曼樹進(jìn)行編碼,生成壓縮文件(后綴名cod)(3)輸入一個(gè)待解壓的壓縮文件名稱,并利用相應(yīng)的哈夫曼樹將編碼序列譯碼,?!緦?shí)現(xiàn)說明】
(1)在構(gòu)造哈夫曼樹時(shí),可以利用不同的線性表存放二叉樹:用順序表、單鏈表,、5 循環(huán)單鏈表,、雙向鏈表、循環(huán)雙鏈表,;
(2)在構(gòu)造哈夫曼樹時(shí),,可以利用優(yōu)先隊(duì)列存放二叉樹:順序隊(duì)列、鏈隊(duì)列(可以是單鏈表,、雙鏈表等,,還可以用靜態(tài)結(jié)構(gòu)去實(shí)現(xiàn)),可以分別在入隊(duì)列或出隊(duì)列時(shí)實(shí)現(xiàn)優(yōu)先級(jí),;
(3)二叉樹本身也可以用靜態(tài)數(shù)組模擬,;(4)使用貪心算法
2.8 迷宮問題(*)
【問題描述】
設(shè)計(jì)一個(gè)迷宮并給出正確走法。如: *** *** *** *** *** *** *** 其中0表示可以走,,1表示不能走,,每一步只能向上下左右移動(dòng)?!净疽蟆?/p>
(1)給出迷宮的正確走法,,包括沒有解的情況;(2)要求界面友好,?!緶y試數(shù)據(jù)】
【實(shí)現(xiàn)提示】 使用回溯的方法。
2.9 繼續(xù)郵資問題
【問題描述】
假設(shè)某國家發(fā)行了n種不同面值的郵票,,并且規(guī)定每張信封上最多只允許貼m張郵票,。連續(xù)郵資問題要求對(duì)于給定的n和m的值,給出郵票面值的最佳設(shè)計(jì),,在1張信封上貼出從郵資1開始,,增量為1的最大連續(xù)郵資區(qū)間。
【基本要求】
輸入任意的m和n都能設(shè)計(jì)出最佳的方案,,并給出連續(xù)郵資區(qū)間,。【實(shí)現(xiàn)說明】 【測試數(shù)據(jù)】
2.10 圖的m著色問題
【問題描述】
給定一個(gè)地圖,,要求給出該地圖的最少著色方案 【基本要求】
(1)把地圖以及最少著色的方案顯示出來則為良好,。(2)有友好的界面則為優(yōu) 【實(shí)現(xiàn)說明】
2.11 猜數(shù)字游戲(*)
【問題描述】
孩子想1個(gè)由4種顏色組成的序列(4種顏色不一定完全不同)。每種顏色只能是6種顏色之一,。方便起見,我們用數(shù)字1到6表示6種顏色,。
計(jì)算機(jī)必須根據(jù)孩子的回答找出孩子所想的顏色序列,。計(jì)算機(jī)在屏幕上顯示一個(gè)序列,孩子用鍵盤回答以下兩個(gè)問題:
猜對(duì)的顏色中位置不對(duì)的有幾個(gè)? 猜對(duì)的顏色中位置對(duì)的有幾個(gè),? 【基本要求】
編程使至多6次問答后猜出序列,,如果辦不到,至多10次問答后猜出序列,?!緦?shí)現(xiàn)說明】 【測試數(shù)據(jù)】
如孩子想的是4655 計(jì)算機(jī)猜想 顏色對(duì)位置錯(cuò)的數(shù)目 顏色和位置都對(duì)的數(shù)目 1234 1 0 5156 2 1 6165 1 1 5625 1 2 5653 1 2 8 4655 0 4 2.12 大整數(shù)計(jì)算器
【問題描述】
設(shè)計(jì)一個(gè)計(jì)算器實(shí)現(xiàn)兩個(gè)任意長得整數(shù)的加、減,、乘,、除?!净疽蟆?/p>
設(shè)計(jì)一個(gè)實(shí)現(xiàn)任意長的整數(shù)進(jìn)行四則運(yùn)算的演示程序,,要求輸入任意長的整數(shù)進(jìn)行四則運(yùn)算,都能得到精確的結(jié)果,。
【實(shí)現(xiàn)說明】
2.13 查找搜索技術(shù)
【問題描述】
給定任意的數(shù)組,,對(duì)于給定的數(shù),查找是否在數(shù)組中,,如果在,,則返回給定數(shù)在數(shù)組的位置,不在則返回不在信息,。
【基本要求】
(1)使用多種搜索方法,,越多越好,其中二分搜索技術(shù),、線性時(shí)間選擇是必須的,;(2)比較每種排序方法的時(shí)間復(fù)雜度和空間復(fù)雜度?!緦?shí)現(xiàn)說明】
2.14 tom,jerry和奶酪(*)
【問題描述】
貓tom和鼠jerry同住在一矩陣地窖中,。貓要吃鼠,鼠要吃奶酪,。地窖中有2種地磚:有洞磚與無洞磚,。一個(gè)洞足以讓鼠鉆入,但貓不能,。
以菜單形式完成以下任務(wù):
隨機(jī)地生成一個(gè)地窖,,并給貓、鼠和奶酪安排一個(gè)位置,。如: fffffffffffffff fppppppppppppcf fhfffffffffffpf fpppjhppppppppf fpffffffpffffff fpppppppppptppf fffffffffffffff 其中c表示貓,,j表示鼠,h表示洞,,f表示不能通行(2)鼠先行,,貓后行,。兩者皆滿足以下規(guī)定: 1)必須上、下,、左或右移動(dòng) 2)鼠必須走1步(穿過p或h)3)貓必須走1或2步(穿過p)
(3)當(dāng)鼠吃到奶酪或貓抓到鼠時(shí),,游戲結(jié)束?!净疽蟆?【實(shí)現(xiàn)說明】
2.15 布線問題
【問題描述】
印刷電路板將布線區(qū)域劃分成n×m個(gè)方格陣列,,精確的電路布線問題要求確定連接方格a的中點(diǎn)到方格b的中點(diǎn)的最短布線方案。在布線時(shí),,電路只能沿著直線或直角布線,。為了避免線路相交,已布了線的方格做了封鎖標(biāo)記,,其他線路不允許穿過被封鎖的方格,。
【基本要求】(1)解決題目的問題(2)提供友好的界面 【實(shí)現(xiàn)說明】 使用分支限界法。
2.16 魔方工具包(*)
【問題描述】
一個(gè)魔方是一個(gè)由3×3×3個(gè)小立方體組成的立方體,。最初立方體的6個(gè)面分別涂上不同顏色,,我們稱之為“最初魔方”。魔方的每一面上的3×3個(gè)小立方體組成它的一層,。
魔方所能見到的每一層(6個(gè)面)都能旋轉(zhuǎn)90,,180,220或360度,。所有層的旋轉(zhuǎn)軸都垂直于面且通過其中心,。旋轉(zhuǎn)的結(jié)果是另一個(gè)魔方,它的所有面的顏色都改變了,。
現(xiàn)在我們用字符來代替顏色:u=上,,d=下,f=前,,b=后,,l=左,r=右,。任何一個(gè)序列的旋轉(zhuǎn)都能表示成{u,r,f,b,l,d}中一些字符組成的字符串,,其中每個(gè)字符表示它所 11 指定的面順時(shí)針旋轉(zhuǎn)90度。
【基本要求】
(1)編程完成以下3個(gè)任務(wù)(菜單形式),,你可以假設(shè)任何輸入的字串長度都<=35,。你的算法能處理非法輸入的情況,如: 輸入 輸出 l l ll ll lll lll llll “”(空串 lllll l llrrrffffrlb lllb hello “error”
(2)判斷輸入的2個(gè)字串的旋轉(zhuǎn)結(jié)果是否相同,。如 輸入一 輸入二 輸出 ru ur no rrffrrffrrffrrff ffrrffrr yes rrffrrffrrffrrff rrffrrff no(3)求出輸入字符串至少須使用幾次才能將魔方轉(zhuǎn)回到“最初魔方”(一定大于0)輸入 輸出 l 4 12 dd 2 bulb 36 ruf 80 bluff 180 【實(shí)現(xiàn)說明】
2.17 圖的建立與輸出
【問題描述】
建立圖的存儲(chǔ)結(jié)構(gòu)(圖的類型可以是有向圖,、無向圖、有向網(wǎng),、無向網(wǎng),,學(xué)生可以任選兩種類型),,能夠輸入圖的頂點(diǎn)和邊的信息,,并存儲(chǔ)到相應(yīng)存儲(chǔ)結(jié)構(gòu)中,,而后輸出圖的鄰接矩陣。
【基本要求】
給出圖的深度優(yōu)先和廣度優(yōu)先遍歷算法,,并給出遍歷過程的動(dòng)態(tài)演示效果 【實(shí)現(xiàn)說明】
無
2.18 圖的建立與輸出
【問題描述】
建立圖的存儲(chǔ)結(jié)構(gòu)(圖的類型可以是有向圖,、無向圖、有向網(wǎng),、無向網(wǎng),,學(xué)生可以任選兩種類型),能夠輸入圖的頂點(diǎn)和邊的信息,,并存儲(chǔ)到相應(yīng)存儲(chǔ)結(jié)構(gòu)中,,而后輸出 13 圖的鄰接矩陣。
【基本要求】
給出圖的深度優(yōu)先和廣度優(yōu)先遍歷算法,,并給出遍歷過程的動(dòng)態(tài)演示效果,。【實(shí)現(xiàn)說明】
無
2.19 以隊(duì)列實(shí)現(xiàn)的仿真技術(shù)預(yù)測理發(fā)館的經(jīng)營狀況(*)
【問題描述】
理發(fā)館一天的工作過程如下:
1)理發(fā)館有n把理發(fā)椅,,可同時(shí)為n位顧客進(jìn)行理發(fā),。
2)理發(fā)師分三個(gè)等級(jí)(一級(jí)、二級(jí),、三級(jí)),,對(duì)應(yīng)不同的服務(wù)收費(fèi)。3)當(dāng)顧客進(jìn)門時(shí),,需選擇某級(jí)別理發(fā)師,,只要該級(jí)別的理發(fā)師有空椅,則可立即坐下理發(fā),,否則需排隊(duì)等候,。
4)一旦該級(jí)別的理發(fā)師有顧客理發(fā)完離去,排在隊(duì)頭的顧客便可開始理發(fā),。5)若理發(fā)館每天連續(xù)營業(yè)t分鐘,,求
(1)一天內(nèi)顧客在理發(fā)館內(nèi)的平均逗留時(shí)間;(2)顧客排隊(duì)等候理發(fā)的隊(duì)列長度平均值,;
(3)營業(yè)時(shí)間到點(diǎn)后仍需完成服務(wù)的收尾工作時(shí)間,;(4)統(tǒng)計(jì)每天的營業(yè)額;
(5)統(tǒng)計(jì)每天不同級(jí)別理發(fā)師的創(chuàng)收,。
【基本要求】
1)模擬理發(fā)館一天的工作過程:必須采用事件驅(qū)動(dòng)的離散模型(參考教科書3.5節(jié)離散事件模擬p65),;
2)每個(gè)顧客到達(dá)和下一顧客到達(dá)時(shí)間的間隔應(yīng)是隨機(jī)的; 3)理發(fā)師編號(hào),、理發(fā)師級(jí)別和每天的營業(yè)時(shí)間由用戶輸入,;
4)某顧客挑選某一個(gè)級(jí)別的理發(fā)師而不得時(shí),,選第一個(gè)隊(duì)列排隊(duì)等待 ;
5)每個(gè)顧客進(jìn)門時(shí)將生成三個(gè)隨機(jī)數(shù):(1)durtime:進(jìn)門顧客理發(fā)所需服務(wù)時(shí)間(簡稱:理發(fā)時(shí)間),;(2)intertime:下一顧客將到達(dá)的時(shí)間間隔(簡稱:間隔時(shí)間),;(3)select:服務(wù)選項(xiàng)。
6)服務(wù)收費(fèi):應(yīng)包含服務(wù)時(shí)間和理發(fā)師級(jí)別兩個(gè)因素,。
7)除了輸出統(tǒng)計(jì)的數(shù)據(jù)外,,還需要顯示理發(fā)館的狀態(tài),可以采用文本方式(橫向顯示每張椅編號(hào),、理發(fā)師級(jí)別,。縱向表示等待該理發(fā)師理發(fā)的排隊(duì)長度),?!緦?shí)現(xiàn)說明】
用戶輸入每位理發(fā)師編號(hào)、級(jí)別號(hào)和營業(yè)的時(shí)間,,結(jié)合隨機(jī)數(shù)進(jìn)行測試,。
2.20 防抄襲管理系統(tǒng)(*)
【問題描述】
對(duì)于給定的文檔,如word文檔,,txt文檔等,,找出文檔的相似度?!净疽蟆?/p>
(1)要求找出給定的兩個(gè)文檔的相似度以及標(biāo)出相似的地方(1:1),;(2)要求找出給定的一個(gè)文檔與給定的文件夾的所有文檔的相似度,以及標(biāo)出相似的地方(1:n)(3)要求找出給定的文件夾下面所有文檔的相似度(n:n),?!緦?shí)現(xiàn)說明】
給定相似文檔進(jìn)行測試。
2.21.設(shè)計(jì)一個(gè)停車場管理系統(tǒng),,模擬停車場的運(yùn)作
設(shè)計(jì)要求:通過此程序具備以下功能:
1,、要求以棧模擬停車場,以隊(duì)列模擬車場 15 外的便道,,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理,;
2、要求處理的數(shù)據(jù)元素包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息,、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻,;
3、該系統(tǒng)完成以下功能:若是車輛到達(dá),,則輸出汽車在停車場內(nèi)或便道上的停車位置,;若是車離去,則輸出汽車在停車場內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi)),;
4,、要求棧以順序結(jié)構(gòu)實(shí)現(xiàn),,隊(duì)列以鏈表實(shí)現(xiàn)。
2.22. 赫夫曼編碼
設(shè)計(jì)要求:自己找一篇不少于200個(gè)單詞的英文文章,,分析該文章中每一個(gè)字符的出現(xiàn)概率(包括標(biāo)點(diǎn)符號(hào),,區(qū)分大小寫),根據(jù)分析結(jié)果對(duì)文章中每一個(gè)字符進(jìn)行赫夫曼編碼,,并將編碼原則儲(chǔ)于一個(gè)獨(dú)立的文本文件中,。最后,,根據(jù)這個(gè)編碼原則,,將英文文章轉(zhuǎn)換為01 串存儲(chǔ)于一個(gè)文本文件中,再編寫一個(gè)解碼程序,,將編碼解碼為原文件,。如:英文文章為 aaabbc 則編碼規(guī)則為 a-----0 b-----10 c-----11 英文文章將被轉(zhuǎn)化為 000101011 2.23.并查集:檢查網(wǎng)絡(luò)
題目要求:給定一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)以及機(jī)器間的雙向連線列表,每一條連線允許兩端的計(jì)算機(jī)進(jìn)行直接的文件傳輸,,其他計(jì)算機(jī)間若存在一條連通路徑,,也可以進(jìn)行間接的文件傳輸。請寫出程序判斷:任意指定兩臺(tái)計(jì)算機(jī),,它們之間是否可以進(jìn)行文件傳輸,? 輸入要求:輸入若干測試數(shù)據(jù)組成。對(duì)于每一組測試,,第1行包含一個(gè)整數(shù)n(≤10000),,即網(wǎng)絡(luò)中計(jì)算機(jī)的總臺(tái)數(shù),因而每臺(tái)計(jì)算機(jī)可用1到n之間的一個(gè)正整數(shù)表示,。接下來的幾行輸入格式為i c1 c2或者 c或者c c1c2或者s,,其中c1和c2是兩臺(tái)計(jì)算機(jī)的 16 序號(hào),i表示在c1和c2間輸入一條連線,,c表示檢查c1和c2間是否可以傳輸文件,,s表示該組測試結(jié)束。
當(dāng)n為0時(shí),,表示全部測試結(jié)束,,不要對(duì)該數(shù)據(jù)做任何處理。
輸出要求:對(duì)每一組c開頭的測試,,檢查c1和c2間是否可以傳輸文件,,若可以,則在一行中輸出“yes”,,否則輸出“no”,。
當(dāng)讀到s時(shí),檢查整個(gè)網(wǎng)絡(luò),。若網(wǎng)絡(luò)中任意兩機(jī)器間都可以傳輸文件,,則在一行中輸出“the network is connected.”,,否則輸出“there are k components.”,其中k是網(wǎng)絡(luò)中連通集的個(gè)數(shù)。
兩組測試數(shù)據(jù)之間請輸出一空行分隔,。
2.24.教學(xué)計(jì)劃編制問題(圖的應(yīng)用)
[問題描述] 大學(xué)的每個(gè)專業(yè)都要制定教學(xué)計(jì)劃,。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,,每學(xué)期的時(shí)間長度和學(xué)分上限值均相等,。每個(gè)專業(yè)開設(shè)的課程都是確定的,而且課程在開設(shè)時(shí)間的安排必須滿足先修關(guān)系,。每門課程有哪些先修課程是確定的,,可以有任意多門,也可以沒有,。每門課恰好占一個(gè)學(xué)期,。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序。[實(shí)現(xiàn)提示]
1,、輸入?yún)?shù)應(yīng)包括:學(xué)期總數(shù),,一學(xué)期的學(xué)分上限,每門課的課程號(hào)(可以是固定占3位的字母數(shù)字串),、學(xué)分和直接先修課的課程號(hào),。
2、應(yīng)允許用戶指定下列兩種編排策略之一:一是使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻,;二是使課程盡可能地集中在前幾個(gè)學(xué)期中,。
3、若根據(jù)給定的條件問題無解,,則報(bào)告適當(dāng)?shù)男畔?;否則將教學(xué)計(jì)劃輸出到用戶指定的文件中。計(jì)劃的表格格式可以自己設(shè)計(jì),。
4,、可設(shè)學(xué)期總數(shù)不超過12,課程總數(shù)不超過100,。如果輸入的先修課程號(hào)不在該專業(yè)開設(shè)的課程序列中,,則作為錯(cuò)誤處理。
============================= 17 2.25.藥品銷售統(tǒng)計(jì)系統(tǒng)(排序應(yīng)用)
【問題描述】
設(shè)計(jì)一系統(tǒng),,實(shí)現(xiàn)醫(yī)藥公司定期對(duì)銷售各藥品的記錄進(jìn)行統(tǒng)計(jì),,可按藥品的編號(hào)、單價(jià),、銷售量或銷售額做出排名,。【實(shí)現(xiàn)提示】
在本設(shè)計(jì)中,首先從數(shù)據(jù)文件中讀出各藥品的信息記錄,,存儲(chǔ)在順序表中,。各藥品的信息包括:藥品編號(hào)、藥名,、藥品單價(jià),、銷出數(shù)量、銷售額,。藥品編號(hào)共4位,,采用字母和數(shù)字混合編號(hào),如:a125,,前一位為大寫字母,,后三位為數(shù)字,按藥品編號(hào)進(jìn)行排序時(shí),,可采用基數(shù)排序法,。對(duì)各藥品的單價(jià)、銷售量或銷售額進(jìn)行排序時(shí),,可采用多種排序方法,如直接插入排序,、冒泡排序,、快速排序,直接選擇排序等方法,。在本設(shè)計(jì)中,,對(duì)單價(jià)的排序采用冒泡排序法,對(duì)銷售量的排序采用快速排序法,,對(duì)銷售額的排序采用堆排序法,。
藥品信息的元素類型定義: typedef struct node { char num[4];/*藥品編號(hào)*/ char name[10];/*藥品名稱*/ float price;/*藥品單價(jià)*/ int count;/*銷售數(shù)量*/ float sale;/*本藥品銷售額*/ }datatype;存儲(chǔ)藥品信息的順序表的定義: typedef struct { datatype r[maxsize];int length;}sequenlist;
2.26梯運(yùn)行仿真程序
[問題描述] 辦公大樓有若干層(例如,十層),,每層有電梯,,同時(shí)有步行樓梯;
全樓有若干部(例如,,不多于10部)電梯同時(shí)供使用,,電梯容量為24人,速度每上下一層需5秒,,在某一層停下至少15秒,。其運(yùn)行狀態(tài)可分:向上、向下,、停止,,當(dāng)前乘客數(shù),當(dāng)前所在層數(shù),。它設(shè)有一個(gè)“按鈕數(shù)組”,,例如第五層的按鈕按下,,意味著有乘客在第5層到達(dá)目標(biāo)層,等等,。在樓的每一層,,有電梯數(shù),有按鈕表示有人等待向上或向下,,由若干人在等待,,有若干電梯在本層停下,等等,。
在大樓中(包括進(jìn)出)的總?cè)藬?shù)不超過500 人,,每個(gè)人站在電梯前有個(gè)目標(biāo)層,他有一個(gè)最大的忍受等待時(shí)間,,因?yàn)樗梢赃x擇電梯或是步行走樓梯,,等等。
還有下面若干假設(shè):在每個(gè)時(shí)間段要進(jìn)大樓的人數(shù)在0~199 之間隨機(jī)取值,;
用電梯的每個(gè)人的目標(biāo)層在1~10 之間取值,;一個(gè)人在進(jìn)電梯或改走樓梯之前的等待時(shí)間在180~360 秒范圍內(nèi)隨機(jī)發(fā)生;一個(gè)人到達(dá)目標(biāo)層后第二次再乘電梯中間的工作時(shí)間在400~6600 秒間隨機(jī)取值,。[基本要求] 編寫一個(gè)程序,,模擬辦公大樓中全部電梯的工作過程。這個(gè)仿真程序可以用來監(jiān)測系統(tǒng)運(yùn)行情況,,改善大樓管理,,它也可以看成是一種游戲程序。
2.27國交通咨詢模擬
[問題描述]
處于不同目的的旅客對(duì)交通工具有不同的要求,。例如,,因公出差的旅客希望在旅 途中的時(shí)間盡可能的短,出門旅游的游客則期望旅費(fèi)盡可能省,,而老年旅客則要求中轉(zhuǎn)次數(shù)最少,。編制一個(gè)全國城市間的交通咨詢程序,為旅客提供最優(yōu)決策的交通咨詢,。
[基本要求]
(1)提供對(duì)城市信息進(jìn)行編輯(如:添加或刪除)的功能,;
(2)城市之間有兩種交通工具:火車或飛機(jī),提供對(duì)全國城市交通圖和列車時(shí)刻表及飛機(jī)航班表進(jìn)行編輯的功能,。(信息的輸入方式可以是文件輸入和鍵盤輸入兩種方式)
(3)提供兩種最優(yōu)決策:最快到達(dá)和最省錢到達(dá),。(選作:旅途中轉(zhuǎn)次數(shù)最少的最優(yōu)決策)
(4)旅途中耗費(fèi)的總時(shí)間應(yīng)該包括中轉(zhuǎn)站的等候時(shí)間。
(5)咨詢以用戶和計(jì)算機(jī)的對(duì)話方式進(jìn)行,。
a)由用戶輸入起始站,、終點(diǎn)站、最優(yōu)決策原則和交通工具;
b)輸出信息:最快需要多長時(shí)間才能到達(dá)或者最少需要多少旅費(fèi)才能到達(dá),,并詳 細(xì)說明依次于何時(shí)乘坐哪一趟列車或哪一次班機(jī)到何地,。
三、課程設(shè)計(jì)的基本要求
1.問題分析和任務(wù)定義,。根據(jù)設(shè)計(jì)題目的要求,,充分地分析和理解問題,明確問題要求做什么,?(而不是怎么做,?)限制條件是什么?
2.邏輯設(shè)計(jì),。對(duì)問題描述中涉及的操作對(duì)象定義相應(yīng)的數(shù)據(jù)類型,,并按照以數(shù)據(jù)結(jié)構(gòu)為中心的原則劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型,。邏輯設(shè)計(jì)的結(jié)果應(yīng)寫出每個(gè)抽象數(shù)據(jù)類型的定義(包括數(shù)據(jù)結(jié)構(gòu)的描述和每個(gè)基本操作的功能說明),,各個(gè)主要模塊的算法,并畫出模塊之間的調(diào)用關(guān)系圖,。
3.詳細(xì)設(shè)計(jì),。定義相應(yīng)的存儲(chǔ)結(jié)構(gòu)并寫出各函數(shù)的偽碼算法。在這個(gè)過程中,,要綜合考慮系統(tǒng)功能,,使得系統(tǒng)結(jié)構(gòu)清晰、合理,、簡單和易于調(diào)試,抽象數(shù)據(jù)類型的實(shí)現(xiàn)盡可能做到數(shù)據(jù)封裝,,基本操作的規(guī)格說明盡可能明確具體,。詳細(xì)設(shè)計(jì)的結(jié)果是對(duì)數(shù)據(jù)結(jié)構(gòu)和基本操作作出進(jìn)一步的求精,20 寫出數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的類型定義,,寫出函數(shù)形式的算法框架,。
4.程序編碼。把詳細(xì)設(shè)計(jì)的結(jié)果進(jìn)一步求精為程序設(shè)計(jì)語言程序,。同時(shí)加入一些注解和斷言,,使程序中邏輯概念清楚。
5.程序調(diào)試與測試,。采用自底向上,,分模塊進(jìn)行,即先調(diào)試低層函數(shù),。能夠熟練掌握調(diào)試工具的各種功能,,設(shè)計(jì)測試數(shù)據(jù)確定疑點(diǎn),通過修改程序來證實(shí)它或繞過它。調(diào)試正確后,,認(rèn)真整理源程序及其注釋,,形成格式和風(fēng)格良好的源程序清單和結(jié)果。
6.結(jié)果分析,。程序運(yùn)行結(jié)果包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果,。算法的時(shí)間、空間復(fù)雜性分析,。
7.編寫課程設(shè)計(jì)報(bào)告并提交相關(guān)內(nèi)容
設(shè)計(jì)最終需提交的內(nèi)容包括:
a)課程設(shè)計(jì)報(bào)告(1份,,a4紙打印,同時(shí)包括一份電子版)報(bào)告要求版面清晰,,格式規(guī)范,,否則重新編寫。報(bào)告內(nèi)容要求包括:
(1)問題的概述,、分析及研究意義,;(2)數(shù)據(jù)結(jié)構(gòu)的邏輯設(shè)計(jì)和物理存儲(chǔ)設(shè)計(jì);(3)重要算法的設(shè)計(jì),、流程描述或偽代碼描述,;
(4)數(shù)據(jù)結(jié)構(gòu)的時(shí)空復(fù)雜性分析以及重要算法的復(fù)雜性分析;
(5)程序最終實(shí)現(xiàn)結(jié)果(包括重點(diǎn)結(jié)果界面的抓取,,能過說明問題的重要實(shí)驗(yàn)結(jié)果數(shù)據(jù)的打印或其可視化結(jié)果等),。
(6)參考文獻(xiàn)(如果需要)。
(7)附錄部分附上關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的定義及關(guān)鍵算法的源代碼,。
b)完整的程序系統(tǒng)(電子方式提交)
能夠?qū)斎氘a(chǎn)生相應(yīng)的輸出,,同時(shí)盡量的完成可視化演示。
該部分包括源代碼和可執(zhí)行文件兩個(gè)部分(提交的時(shí)候需清楚的注明個(gè)人姓名,,班級(jí)),。
c)源程序文檔(電子方式提交)
源程序代碼要求結(jié)構(gòu)清晰、可讀性好,。應(yīng)對(duì)源程序中的類說明(如果采用面向?qū)ο蠓椒ㄔO(shè)計(jì)),,函數(shù)說明,接口說明,,關(guān)鍵變量說明等進(jìn)行注釋,;源程序要進(jìn)行適當(dāng)?shù)目s進(jìn)編排。
d)答辯報(bào)告(編寫power point答辯報(bào)告,,電子方式提交)要求突出重點(diǎn),,思路清晰。同時(shí)就此報(bào)告準(zhǔn)備答辯,。
e)所有以電子方式提交的文件全部存在一個(gè)目錄中,,并對(duì)其進(jìn)行壓縮(用winrar或winzip均 21 可),,壓縮后的文件按規(guī)定格式進(jìn)行命名,命名格式為:學(xué)號(hào)+(),。8.每位同學(xué)只能選擇一個(gè)題目并完成
四,、評(píng)分標(biāo)準(zhǔn)
1、基本功能:
50分。
通過功能的實(shí)現(xiàn)情況、界面的完成情況,、軟件的實(shí)現(xiàn)情況進(jìn)行評(píng)分。
2,、設(shè)計(jì)報(bào)告及使用說明書: 20分 按照報(bào)告的要求進(jìn)行評(píng)分。
3,、回答問題:
4,、平時(shí)考勤:
5、核分標(biāo)準(zhǔn):
15分 15分 100分
(90~100為優(yōu),、80~89為良,、70~79為中、60~69為及格,、,,60以下為不及格)
五、參考書目
嚴(yán)蔚敏.《數(shù)據(jù)結(jié)構(gòu)》(c語言版).清華大學(xué)出版社 劉玉龍.《數(shù)據(jù)結(jié)構(gòu)與算法》.電子工業(yè)出版社.嚴(yán)蔚敏等《數(shù)據(jù)結(jié)構(gòu)題集》(c語言版).清華大學(xué)出版社
徐孝凱.數(shù)據(jù)結(jié)構(gòu)實(shí)用教程(c/c++描述).北京:清華大學(xué)出版社.陳慧南.數(shù)據(jù)結(jié)構(gòu)(使用c++語言描述).南京:東南大學(xué)出版社.殷人昆, 陶永雷, 謝若陽等.數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcc++描述).北京:清華大學(xué)出版社.22