在日常學(xué)習(xí)、工作或生活中,大家總少不了接觸作文或者范文吧,通過(guò)文章可以把我們那些零零散散的思想,聚集在一塊。范文怎么寫(xiě)才能發(fā)揮它最大的作用呢?以下是我為大家搜集的優(yōu)質(zhì)范文,僅供參考,一起來(lái)看看吧
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目答案篇一
一、基本信息
課程編號(hào):e1132107 課程類別:學(xué)科基礎(chǔ)課必修課 適用層次:本科
適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程、軟件工程等 開(kāi)課學(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)目。通過(guò)這個(gè)實(shí)驗(yàn),培養(yǎng)學(xué)生綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)基本知識(shí)和程序設(shè)計(jì)基本知識(shí),解決實(shí)際問(wèn)題,提高程序設(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í)際問(wèn)題在計(jì)算機(jī)內(nèi)部表示出來(lái),并培養(yǎng)基本的、良好的程序設(shè)計(jì)技能。
1.學(xué)生通過(guò)實(shí)踐掌握線性表、樹(shù)、圖等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及算法實(shí)現(xiàn); 2.培養(yǎng)學(xué)生利用數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問(wèn)題的能力;3.使學(xué)生初步具備查閱資料、分析設(shè)計(jì)、上機(jī)實(shí)現(xiàn)和書(shū)寫(xiě)科技 報(bào)告的能力。
三、基本要求
1.指導(dǎo)教師要在選題、設(shè)計(jì)、上機(jī)實(shí)現(xiàn)等諸環(huán)節(jié)上投入精力,加強(qiáng)指導(dǎo)、討論和答疑的力度。尤其在選題上,要充分考慮學(xué)生目前所具有的知識(shí)水平、掌握的開(kāi)發(fā)工具、以及綜合設(shè)計(jì)能力的現(xiàn)狀,使題目取材合理、大小適中、難易適度,使學(xué)生在完成設(shè)計(jì)工作后,能有所收獲。2.參加課程設(shè)計(jì)的學(xué)生要珍惜機(jī)會(huì)、勤奮工作、勇于創(chuàng)新、勇于探索、勇于實(shí)踐,虛心向指導(dǎo)教師請(qǐng)教,向同學(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ù)、圖等數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問(wèn)題。2.軟件開(kāi)發(fā)工具:c/c++、java。
3.課程設(shè)計(jì)題目:指導(dǎo)教師擬定(參考題目見(jiàn)附錄1)
4.具體步驟:指導(dǎo)教師擬定設(shè)計(jì)題目,學(xué)生研究具體問(wèn)題、進(jìn)行需求分析、選擇合適的數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法、編寫(xiě)并調(diào)試代碼、書(shū)寫(xiě)文檔材料、提交設(shè)計(jì)報(bào)告,最后,由指導(dǎo)教師驗(yàn)收并評(píng)定成績(jī)。
5.設(shè)計(jì)內(nèi)容及時(shí)間安排:第1-3天,選定題目,明確題目要求、確定數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法,并分析算法復(fù)雜度;第4-8天,編寫(xiě)程序、調(diào)試程序、測(cè)試程序;第9-10天,撰寫(xiě)設(shè)計(jì)報(bào)告,準(zhǔn)備答辯(上機(jī)演示,回答教師提問(wèn))。6.設(shè)計(jì)報(bào)告書(shū)寫(xiě)要求:按照軟件開(kāi)發(fā)規(guī)范的要求書(shū)寫(xiě)設(shè)計(jì)報(bào)告(參見(jiàn)附錄三報(bào)告書(shū)寫(xiě)格式);要求報(bào)告層次結(jié)構(gòu)清晰、圖表完整、語(yǔ)言通順、字跡工整。7.驗(yàn)收要求:1)運(yùn)行所設(shè)計(jì)的程序;2)回答有關(guān)問(wèn)題;3)提交課程設(shè)計(jì)報(bào)告(打印或手寫(xiě)在實(shí)習(xí)報(bào)告冊(cè)上);4)提交軟盤(源程序)。(鼓勵(lì)學(xué)生創(chuàng)新。對(duì)內(nèi)容有創(chuàng)新者,成績(jī)?cè)u(píng)定將適當(dāng)提高)。
五、考核方法
學(xué)習(xí)成績(jī)的評(píng)定方式:考查。
課程設(shè)計(jì)成績(jī)?cè)u(píng)定 =平時(shí)出勤(20%)+設(shè)計(jì)報(bào)告(40%)+答辯(40%)通過(guò)設(shè)計(jì)答辯方式,并結(jié)合學(xué)生的動(dòng)手能力,獨(dú)立分析解決問(wèn)題的能力和創(chuàng)新精神,總結(jié)報(bào)告和答辯水平以及學(xué)習(xí)態(tài)度綜合考評(píng)。成績(jī)分為優(yōu)、良、中、及格和不及格五等。
六、教材與參考資料 1.建議教材:
[1] 數(shù)據(jù)結(jié)構(gòu)(c++)版,王紅梅、胡明、王濤編著,清華大學(xué)出版社,2005.7 [2] 自編教材
2.建議參考書(shū)目:
[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.商廈家電庫(kù)存管理 2.排序算法的時(shí)間比較
3.使用哈希表技術(shù)判斷兩個(gè)源程序的相似性 4.以隊(duì)列實(shí)現(xiàn)的仿真技術(shù)預(yù)測(cè)理發(fā)館的經(jīng)營(yíng)狀況 5.某公園導(dǎo)游圖
6.用樹(shù)型結(jié)構(gòu)的搜索算法模擬因特網(wǎng)域名的查詢 7.管道鋪設(shè)施工的最佳方案選擇 8.表達(dá)式分析與求值程序 9.安排教學(xué)計(jì)劃
10.設(shè)計(jì)huffman 編碼器與解碼器 11.在國(guó)際象棋盤上馬遍歷問(wèn)題 12.八皇后問(wèn)題 13.民航售票系統(tǒng) 14.模擬旅館管理系統(tǒng)中的床位分配和加收 15.銀行業(yè)務(wù)活動(dòng)的模擬
16.文字統(tǒng)計(jì)系統(tǒng)—文字研究助手 17.修道士野人問(wèn)題 18.考試問(wèn)題
19.計(jì)算機(jī)輔助考核系統(tǒng) 20.學(xué)籍管理系統(tǒng)
注:學(xué)生可以自選題目或選擇指導(dǎo)老師擬定的題目。
附錄二
開(kāi)發(fā)步驟
1.分析題目的要求、目的; 2.選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu);
3.抽象數(shù)據(jù)類型的設(shè)計(jì); 4.抽象數(shù)據(jù)類型的實(shí)現(xiàn); 5.編寫(xiě)代碼、上機(jī)調(diào)試; 6.總結(jié)驗(yàn)收、評(píng)價(jià)。
附錄三 報(bào)告書(shū)寫(xiě)格式
1.問(wèn)題描述
題目?jī)?nèi)容、基本要求 2.需求分析
軟件的基本功能、輸入/輸出形式、測(cè)試數(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)試過(guò)程中遇到的問(wèn)題及解決的辦法,還存在哪些沒(méi)有解決的問(wèn)題? 6.使用說(shuō)明
簡(jiǎn)要說(shuō)明程序運(yùn)行操作步驟 7.測(cè)試結(jié)果
8.課程設(shè)計(jì)心得體會(huì)
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目答案篇二
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目
1.成績(jī)管理
問(wèn)題描述:給出n個(gè)學(xué)生的考試成績(jī)表,成績(jī)表包括學(xué)生的學(xué)號(hào)、姓名、考試成績(jī)(高等數(shù)
學(xué)、英語(yǔ)、物理),設(shè)計(jì)一個(gè)簡(jiǎn)單的成績(jī)管理程序。
基本要求:
(1)建立成績(jī)表,能夠插入、刪除、修改學(xué)生的成績(jī)記錄;(2)按任一單科成績(jī)排序;(3)計(jì)算每名學(xué)生的平均成績(jī);
(4)統(tǒng)計(jì)任一單科成績(jī)不及格的學(xué)生人數(shù), 輸出不及格人數(shù)及不及格的學(xué)生名單(5)根據(jù)平均成績(jī)將成績(jī)表按由高到低的次序排列,統(tǒng)計(jì)每名學(xué)生在考試中獲得的名次,分?jǐn)?shù)相同的為同一名次,按名次輸出成績(jī)表。
(6)成績(jī)表保存在文件中, 可以從文件讀取數(shù)據(jù)。
測(cè)試數(shù)據(jù):學(xué)生可以根據(jù)自己班級(jí)的考試成績(jī)單,任意截取一部分做為測(cè)試數(shù)據(jù) 2.一元多項(xiàng)式簡(jiǎn)單計(jì)算
問(wèn)題描述:設(shè)計(jì)一個(gè)簡(jiǎn)單一元多項(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é)果,且算法的效率高。測(cè)試數(shù)據(jù):可任意選取兩個(gè)一元多項(xiàng)式,可以是一般的多項(xiàng)式,也可以是稀疏多項(xiàng)式。3.舞伴問(wèn)題
問(wèn)題描述:一班有m個(gè)女生、n個(gè)男生(m不等于n), 舉辦一場(chǎng)舞會(huì).男女生分別編號(hào)坐在舞池兩邊的椅子上,每曲開(kāi)始時(shí), 依次從男生和女生中各出一人配對(duì)跳舞, 本曲沒(méi)成功配對(duì)者坐著等待下一曲找舞伴,設(shè)計(jì)一個(gè)程序模擬舞伴配對(duì)過(guò)程。
基本要求:輸入男、女學(xué)生的姓名、性別,由程序自動(dòng)為男女生編號(hào),可以順序編號(hào),也可以隨機(jī)編號(hào),輸出每曲配對(duì)情況(包括男、女生的姓名、性別和編號(hào))。原始數(shù)據(jù)和結(jié)果數(shù)據(jù)要保存到文件中。
測(cè)試數(shù)據(jù):分別選擇男生多于女生、女生多于男生、男女生相等的三組測(cè)試數(shù)據(jù) 提高要求:計(jì)算出任意一位男生(編號(hào)為x)和任意一位女生(編號(hào)為y), 在第k曲配對(duì)跳舞的情況。
4.文學(xué)研究助手(*)
問(wèn)題描述:文學(xué)研究人員需要統(tǒng)計(jì)某篇英文小說(shuō)中某些形容詞的出現(xiàn)次數(shù)和位置。試寫(xiě)一個(gè)實(shí)現(xiàn)這一目標(biāo)的文字統(tǒng)計(jì)系統(tǒng),稱為“文學(xué)研究助手”?;疽螅河⑽男≌f(shuō)存于一個(gè)文本文件中,待統(tǒng)計(jì)的詞匯集合要一次輸入完畢,即統(tǒng)計(jì)工作必須在程序的一次運(yùn)行之后就全部完成。程序的輸出結(jié)果是每個(gè)詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在行的行號(hào),格式自行設(shè)計(jì), 結(jié)果保存到文件中。
提高要求:模式匹配選取kmp算法
測(cè)試數(shù)據(jù):以你的c/c++/java源程序模擬英文小說(shuō),相應(yīng)語(yǔ)言的保留字集作為待統(tǒng)計(jì)的詞匯集。
5.哈希表的設(shè)計(jì)與實(shí)現(xiàn)(*)
問(wè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)造,采用線性探測(cè)法解決沖突??梢圆迦搿⒉檎?、刪除并顯示給定用戶名的記錄,并計(jì)算查找長(zhǎng)度, 哈希表保存到文件中。
測(cè)試數(shù)據(jù):取某個(gè)單位電話號(hào)碼簿中的30個(gè)記錄。
提高要求:將電話號(hào)碼薄以文件形式保存到盤上,能夠按用戶名和電話號(hào)碼兩種形式建立哈希表并實(shí)現(xiàn)插入、查找、刪除表中元素的功能。
6.管道鋪設(shè)施工的最佳方案(*)
問(wèn)題描述:需要在某個(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í), 也保存于文件中。
測(cè)試用例:任意選擇一個(gè)圖,模擬小區(qū)間可能鋪設(shè)的管道及費(fèi)用。提高要求:顯示原始圖及選擇n-1條管道后的圖。
7.安排教學(xué)計(jì)劃(**)
問(wèn)題描述:大學(xué)的每個(gè)專業(yè)都要制定教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩個(gè)學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限值均相等。每個(gè)專業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間的安排上必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒(méi)有。每門課程恰好占一個(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ù)給定的條件問(wèn)題無(wú)解,則報(bào)告適當(dāng)?shù)男畔?,否則將教學(xué)計(jì)劃輸出到用戶指定的文件中。教學(xué)計(jì)劃的表格格式自行設(shè)定, 可以從鍵盤讀取數(shù)據(jù)也可以從文件讀取數(shù)據(jù), 結(jié)果保存到文件中。
測(cè)試數(shù)據(jù):學(xué)期總數(shù)為6,學(xué)分上限為10,該專業(yè)共開(kāi)設(shè)12門。以08級(jí)某專業(yè)必修課與選修課為例,選擇12門課程及相應(yīng)學(xué)分,制定一個(gè)表明各門課程先后約束關(guān)系的有向圖。
提高要求:產(chǎn)生多種不同的方案,并使方案之間的差異盡可能地大。8.停車場(chǎng)管理程序(**)問(wèn)題描述:設(shè)停車場(chǎng)內(nèi)只有一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)內(nèi)已停滿n輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦有車開(kāi)走,則排在便道上的第一輛車即可開(kāi)入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開(kāi)時(shí),在它之后開(kāi)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開(kāi)出大門外,其它車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開(kāi)停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。
基本要求:每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻,對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便道上的停車位置;若是車離去;則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi),單位時(shí)間的停車費(fèi)用由用戶從鍵盤輸入)。
測(cè)試數(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è)停車場(chǎng)有南、北兩個(gè)門,每個(gè)門都可以進(jìn)、出車輛。9.計(jì)算表達(dá)式的值(**)問(wèn)題描述:對(duì)于給定的一個(gè)表達(dá)式,表達(dá)式中可以包括常數(shù)、算術(shù)運(yùn)行符(“+”、“-”、“*”、“/”)和括號(hào),編寫(xiě)程序計(jì)算表達(dá)式的值。
基本要求:從鍵盤輸入一個(gè)正確的中綴表達(dá)式,將中綴表達(dá)式轉(zhuǎn)換為對(duì)應(yīng)的后綴表達(dá)式,計(jì)算后綴表達(dá)式的值。
測(cè)試數(shù)據(jù):任意選取一個(gè)符合題目要求的表達(dá)式。提高要求:(1)對(duì)于表達(dá)式中的簡(jiǎn)單錯(cuò)誤,能夠給出提示;
(2)表達(dá)式中可以包括單個(gè)字母表示的變量。
10.設(shè)計(jì)huffman 編碼器與解碼器(***)
問(wèn)題描述:利用哈夫曼編碼進(jìn)行信息通訊可以大大提高信道的利用率,縮短信息傳輸時(shí)間,降低傳輸成本。但是,這要求在發(fā)送端通過(guò)一個(gè)編碼系統(tǒng)對(duì)待傳輸數(shù)據(jù)預(yù)先編碼;在接受端將傳來(lái)的數(shù)據(jù)進(jìn)行譯碼。對(duì)于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個(gè)完整的編/譯碼系統(tǒng)。試為這樣的信息收發(fā)站編寫(xiě)一個(gè)哈夫曼碼的編/譯碼系統(tǒng)。
基本要求:根據(jù)某字符文件統(tǒng)計(jì)字符出現(xiàn)頻度,構(gòu)造huffman 樹(shù),編制huffman編碼,并將給定字符文件編碼,生成編碼文件;再將給定編碼文件解碼,生成字符文件。(要求按二進(jìn)制位表示編碼)測(cè)試數(shù)據(jù):英文文件。
提高要求:用二進(jìn)制表示編碼,生成二進(jìn)制的編碼文件。11.銀行業(yè)務(wù)模擬(***)
問(wèn)題描述:設(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ù)。寫(xiě)一個(gè)上述銀行業(yè)務(wù)的模擬系統(tǒng),通過(guò)模擬方法求出客戶在銀行內(nèi)逗留的平均時(shí)間和每個(gè)窗口辦理的客戶數(shù)及辦理的每種業(yè)務(wù)數(shù)。
基本要求:每個(gè)客戶到達(dá)銀行的時(shí)間和需要辦理的業(yè)務(wù)隨機(jī)產(chǎn)生,輸出一天客戶在銀行的平均逗留時(shí)間和每個(gè)窗口每天辦理的客戶數(shù)和每種業(yè)務(wù)數(shù)。
測(cè)試數(shù)據(jù):營(yíng)業(yè)時(shí)間為8小時(shí),其他模擬量自行設(shè)定。12.程序源代碼的相似性(***)
問(wèn)題描述:對(duì)于兩個(gè)c++語(yǔ)言的源程序代碼,用哈希表的方法分別統(tǒng)計(jì)兩個(gè)程序中使用c++語(yǔ)言關(guān)鍵字的情況,并最終按定量的計(jì)算結(jié)果,得出兩份程序的相似性。
基本要求:建立c++語(yǔ)言關(guān)鍵字的哈希表,統(tǒng)計(jì)在每個(gè)源程序中c++關(guān)鍵字出現(xiàn)的頻度, 得到兩個(gè)向量x1和x2,通過(guò)計(jì)算向量x1和x2的相對(duì)距離來(lái)判斷兩個(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è)程序的差別可能也越大。
測(cè)試數(shù)據(jù): 選擇若干組編譯和運(yùn)行都無(wú)誤的c++程序,程序之間有相近的和差別大的,用上述方法求s, 對(duì)比兩個(gè)程序的相似性。
提高要求:建立源代碼用戶標(biāo)識(shí)符表,比較兩個(gè)源代碼用戶標(biāo)識(shí)符出現(xiàn)的頻度,綜合關(guān)鍵字頻度和用戶標(biāo)識(shí)符頻度判斷兩個(gè)程序的相似性。
13.小型文本編輯器
問(wèn)題描述:設(shè)計(jì)一個(gè)行編輯程序,使其具有通常行編輯器(如vi、edlin)應(yīng)具備的基本功能。
基本要求:編輯器應(yīng)具備對(duì)文本文件的查找、插人、刪除、修改、字符串替換、統(tǒng)計(jì)字?jǐn)?shù),統(tǒng)計(jì)行數(shù)等功能,對(duì)于超過(guò)一屏的長(zhǎng)文件,應(yīng)能夠分頁(yè)顯示,查找功能用字符串匹配算法實(shí)現(xiàn)。設(shè)計(jì)用戶接口命令,實(shí)現(xiàn)對(duì)文本的編輯。具體的編輯命令,可參考數(shù)據(jù)結(jié)構(gòu)算法網(wǎng)絡(luò)教學(xué)平臺(tái)上提供的edlin、vi的命令集。
測(cè)試數(shù)據(jù):任一文本文件。
提高要求:1.可以支持“* ”、“? ”等通配符;
2.支持復(fù)制、粘貼等功能
3.支持多文檔同時(shí)編輯;
提示:可以考慮用雙向鏈表實(shí)現(xiàn),每一結(jié)點(diǎn)表示一行字符,注意每行字符不能超過(guò)255。14.小型英漢詞典
問(wèn)題描述:設(shè)計(jì)一個(gè)英漢詞典,支持member(查找)、insert(插入)、delete(刪除)操作。
基本要求:實(shí)現(xiàn)字典的常用方法有:有序線性表(memeber用二分檢索實(shí)現(xiàn))、avl樹(shù)(二叉搜索樹(shù))、patricia trie、散列表等,任選一種方法實(shí)現(xiàn)字典的操作,查找單詞、插入單詞(插入時(shí),先查找,找不到插入,找到提示用戶)、刪除單詞(刪除時(shí),先查找,找到刪除,找不到提示用戶)。
測(cè)試數(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ī)等級(jí)為及格(無(wú)*號(hào))、中等(*號(hào))、良好(**號(hào))、優(yōu)秀(***號(hào)),學(xué)生完成題目的基本要求,即可得到程序設(shè)計(jì)部分的相應(yīng)等級(jí)成績(jī),完成題目提高要求,成績(jī)可以向上浮動(dòng),如果沒(méi)有完成基本要求,成績(jī)向下浮動(dòng),直至不及格。
2.所有題目均需用c++完成,不能用c或mfc。3.實(shí)驗(yàn)班的學(xué)生原則上應(yīng)選擇“*”號(hào)多的題目。4.每道題的選題人數(shù)不能超過(guò)3人
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目答案篇三
2014/2015學(xué)年第一學(xué)期
《數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)》任務(wù)書(shū)
一、課程設(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í)際問(wèn)題相聯(lián)接的關(guān)鍵步驟。通過(guò)課程設(shè)計(jì),能夠提高學(xué)生分析問(wèn)題、解決問(wèn)題,從而運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力,因而必須給予足夠的重視。
2二、課程設(shè)計(jì)題目
2.1 棋盤覆蓋
【間題描述】
在一個(gè)2k×2k 個(gè)方格組成的棋盤中,恰有一個(gè)方格與其它方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問(wèn)題中,要用圖示的4種不同形態(tài)的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個(gè)l型骨牌不得重疊覆蓋。
【基本要求】
(1)輸入k以及特殊方格所在的行號(hào)dr和特殊方格的列號(hào)dc。
1(2)要求輸出每一步用什么形態(tài)l型骨牌覆蓋,覆蓋后得到的棋盤圖形。(3)如果輸出的結(jié)果只是用矩陣表示則為良好,用圖形表示則為優(yōu)?!緶y(cè)試數(shù)據(jù)】 【實(shí)現(xiàn)提示】
使用分治策略,把棋盤劃分成4個(gè)小棋盤,然后用一個(gè)l型骨牌覆蓋將這4個(gè)小棋盤變?yōu)槎季哂刑厥夥礁竦钠灞P。
2.2 hanoi塔問(wèn)題(*)
【問(wèn)題描述】
設(shè)a,b,c是三個(gè)塔座。開(kāi)始時(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)說(shuō)明】
正確的搬運(yùn)方法使用遞歸方法實(shí)現(xiàn)。【測(cè)試數(shù)據(jù)】
2.3 矩陣連乘問(wèn)題
【問(wèn)題描述】
給定n個(gè)矩陣{a1,a2,...,an},其中ai和ai?1是可乘的,i=1,2,?,n-1??疾爝@n個(gè)矩陣的連乘積a1a2,...,an,通過(guò)加括號(hào)方式,找出矩陣乘積所需的最少計(jì)算量的方法。
【基本要求】
輸入每個(gè)矩陣的行和列,要求輸出最少計(jì)算量的矩陣乘積方法,如(a1(a2(a3a4)))?!緦?shí)現(xiàn)說(shuō)明】 使用動(dòng)態(tài)規(guī)劃方法。
2.4 多邊形游戲(*)
【問(wèn)題描述】
多邊形游戲是一個(gè)單人玩的游戲,開(kāi)始時(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ù)值通過(guò)邊e上的運(yùn)算得到的結(jié)果賦予新頂點(diǎn)。
最后,所有邊都被刪除,游戲結(jié)束。游戲的得分就是所剩頂點(diǎn)上的整數(shù)值?!净疽蟆?/p>
設(shè)計(jì)該游戲供用戶玩;
對(duì)于給定的多邊形,給出最高得分計(jì)算。【實(shí)現(xiàn)說(shuō)明】 使用動(dòng)態(tài)規(guī)劃方法。
2.5 0-1背包問(wèn)題
【問(wèn)題描述】
給定n種物品和一背包。物品i的重量是wi,其價(jià)值為vi,背包的容量為c。問(wèn)應(yīng)如何選擇裝入背包種的物品,使得裝入背包種物品的總價(jià)值最大。
【基本要求】
使用動(dòng)態(tài)規(guī)劃、回溯法以及分支界限三種方法實(shí)現(xiàn)。【測(cè)試數(shù)據(jù)】 【實(shí)現(xiàn)提示】
2.6 排序方法
【問(wèn)題描述】
給定n個(gè)元素,要求對(duì)這n個(gè)元素進(jìn)行排序?!净疽蟆?/p>
使用多種排序方法,越多越好;
比較每種排序方法的時(shí)間復(fù)雜度和空間復(fù)雜度?!緶y(cè)試數(shù)據(jù)】 【實(shí)現(xiàn)提示】
2.7 哈夫曼編碼譯碼器
【問(wèn)題描述】
設(shè)計(jì)一個(gè)哈夫曼編碼/譯碼系統(tǒng),對(duì)一個(gè)文本文件中的字符進(jìn)行哈夫曼編碼,生成編碼文件
(壓縮文件,);反過(guò)來(lái),可將一個(gè)壓縮文件譯碼還原為一個(gè)文本文件(.txt)。
【基本要求】
(1)輸入一個(gè)待壓縮的英文文本文件,統(tǒng)計(jì)文本文件中各字符的個(gè)數(shù)作為權(quán)值,生成哈夫曼樹(shù);
(2)將文本文件利用哈夫曼樹(shù)進(jìn)行編碼,生成壓縮文件(后綴名cod)(3)輸入一個(gè)待解壓的壓縮文件名稱,并利用相應(yīng)的哈夫曼樹(shù)將編碼序列譯碼?!緦?shí)現(xiàn)說(shuō)明】
(1)在構(gòu)造哈夫曼樹(shù)時(shí),可以利用不同的線性表存放二叉樹(shù):用順序表、單鏈表、5 循環(huán)單鏈表、雙向鏈表、循環(huán)雙鏈表;
(2)在構(gòu)造哈夫曼樹(shù)時(shí),可以利用優(yōu)先隊(duì)列存放二叉樹(shù):順序隊(duì)列、鏈隊(duì)列(可以是單鏈表、雙鏈表等,還可以用靜態(tài)結(jié)構(gòu)去實(shí)現(xiàn)),可以分別在入隊(duì)列或出隊(duì)列時(shí)實(shí)現(xiàn)優(yōu)先級(jí);
(3)二叉樹(shù)本身也可以用靜態(tài)數(shù)組模擬;(4)使用貪心算法
2.8 迷宮問(wèn)題(*)
【問(wèn)題描述】
設(shè)計(jì)一個(gè)迷宮并給出正確走法。如: *** *** *** *** *** *** *** 其中0表示可以走,1表示不能走,每一步只能向上下左右移動(dòng)?!净疽蟆?/p>
(1)給出迷宮的正確走法,包括沒(méi)有解的情況;(2)要求界面友好?!緶y(cè)試數(shù)據(jù)】
【實(shí)現(xiàn)提示】 使用回溯的方法。
2.9 繼續(xù)郵資問(wèn)題
【問(wèn)題描述】
假設(shè)某國(guó)家發(fā)行了n種不同面值的郵票,并且規(guī)定每張信封上最多只允許貼m張郵票。連續(xù)郵資問(wèn)題要求對(duì)于給定的n和m的值,給出郵票面值的最佳設(shè)計(jì),在1張信封上貼出從郵資1開(kāi)始,增量為1的最大連續(xù)郵資區(qū)間。
【基本要求】
輸入任意的m和n都能設(shè)計(jì)出最佳的方案,并給出連續(xù)郵資區(qū)間?!緦?shí)現(xiàn)說(shuō)明】 【測(cè)試數(shù)據(jù)】
2.10 圖的m著色問(wèn)題
【問(wèn)題描述】
給定一個(gè)地圖,要求給出該地圖的最少著色方案 【基本要求】
(1)把地圖以及最少著色的方案顯示出來(lái)則為良好。(2)有友好的界面則為優(yōu) 【實(shí)現(xiàn)說(shuō)明】
2.11 猜數(shù)字游戲(*)
【問(wèn)題描述】
孩子想1個(gè)由4種顏色組成的序列(4種顏色不一定完全不同)。每種顏色只能是6種顏色之一。方便起見(jiàn),我們用數(shù)字1到6表示6種顏色。
計(jì)算機(jī)必須根據(jù)孩子的回答找出孩子所想的顏色序列。計(jì)算機(jī)在屏幕上顯示一個(gè)序列,孩子用鍵盤回答以下兩個(gè)問(wèn)題:
猜對(duì)的顏色中位置不對(duì)的有幾個(gè)? 猜對(duì)的顏色中位置對(duì)的有幾個(gè)? 【基本要求】
編程使至多6次問(wèn)答后猜出序列,如果辦不到,至多10次問(wèn)答后猜出序列?!緦?shí)現(xiàn)說(shuō)明】 【測(cè)試數(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ì)算器
【問(wèn)題描述】
設(shè)計(jì)一個(gè)計(jì)算器實(shí)現(xiàn)兩個(gè)任意長(zhǎng)得整數(shù)的加、減、乘、除?!净疽蟆?/p>
設(shè)計(jì)一個(gè)實(shí)現(xiàn)任意長(zhǎng)的整數(shù)進(jìn)行四則運(yùn)算的演示程序,要求輸入任意長(zhǎng)的整數(shù)進(jìn)行四則運(yùn)算,都能得到精確的結(jié)果。
【實(shí)現(xiàn)說(shuō)明】
2.13 查找搜索技術(shù)
【問(wèn)題描述】
給定任意的數(shù)組,對(duì)于給定的數(shù),查找是否在數(shù)組中,如果在,則返回給定數(shù)在數(shù)組的位置,不在則返回不在信息。
【基本要求】
(1)使用多種搜索方法,越多越好,其中二分搜索技術(shù)、線性時(shí)間選擇是必須的;(2)比較每種排序方法的時(shí)間復(fù)雜度和空間復(fù)雜度?!緦?shí)現(xiàn)說(shuō)明】
2.14 tom,jerry和奶酪(*)
【問(wèn)題描述】
貓tom和鼠jerry同住在一矩陣地窖中。貓要吃鼠,鼠要吃奶酪。地窖中有2種地磚:有洞磚與無(wú)洞磚。一個(gè)洞足以讓鼠鉆入,但貓不能。
以菜單形式完成以下任務(wù):
隨機(jī)地生成一個(gè)地窖,并給貓、鼠和奶酪安排一個(gè)位置。如: fffffffffffffff fppppppppppppcf fhfffffffffffpf fpppjhppppppppf fpffffffpffffff fpppppppppptppf fffffffffffffff 其中c表示貓,j表示鼠,h表示洞,f表示不能通行(2)鼠先行,貓后行。兩者皆滿足以下規(guī)定: 1)必須上、下、左或右移動(dòng) 2)鼠必須走1步(穿過(guò)p或h)3)貓必須走1或2步(穿過(guò)p)
(3)當(dāng)鼠吃到奶酪或貓抓到鼠時(shí),游戲結(jié)束。【基本要求】 【實(shí)現(xiàn)說(shuō)明】
2.15 布線問(wèn)題
【問(wèn)題描述】
印刷電路板將布線區(qū)域劃分成n×m個(gè)方格陣列,精確的電路布線問(wèn)題要求確定連接方格a的中點(diǎn)到方格b的中點(diǎn)的最短布線方案。在布線時(shí),電路只能沿著直線或直角布線。為了避免線路相交,已布了線的方格做了封鎖標(biāo)記,其他線路不允許穿過(guò)被封鎖的方格。
【基本要求】(1)解決題目的問(wèn)題(2)提供友好的界面 【實(shí)現(xiàn)說(shuō)明】 使用分支限界法。
2.16 魔方工具包(*)
【問(wèn)題描述】
一個(gè)魔方是一個(gè)由3×3×3個(gè)小立方體組成的立方體。最初立方體的6個(gè)面分別涂上不同顏色,我們稱之為“最初魔方”。魔方的每一面上的3×3個(gè)小立方體組成它的一層。
魔方所能見(jiàn)到的每一層(6個(gè)面)都能旋轉(zhuǎn)90,180,220或360度。所有層的旋轉(zhuǎn)軸都垂直于面且通過(guò)其中心。旋轉(zhuǎn)的結(jié)果是另一個(gè)魔方,它的所有面的顏色都改變了。
現(xiàn)在我們用字符來(lái)代替顏色: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è)任何輸入的字串長(zhǎng)度都<=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)說(shuō)明】
2.17 圖的建立與輸出
【問(wèn)題描述】
建立圖的存儲(chǔ)結(jié)構(gòu)(圖的類型可以是有向圖、無(wú)向圖、有向網(wǎng)、無(wú)向網(wǎng),學(xué)生可以任選兩種類型),能夠輸入圖的頂點(diǎn)和邊的信息,并存儲(chǔ)到相應(yīng)存儲(chǔ)結(jié)構(gòu)中,而后輸出圖的鄰接矩陣。
【基本要求】
給出圖的深度優(yōu)先和廣度優(yōu)先遍歷算法,并給出遍歷過(guò)程的動(dòng)態(tài)演示效果 【實(shí)現(xiàn)說(shuō)明】
無(wú)
2.18 圖的建立與輸出
【問(wèn)題描述】
建立圖的存儲(chǔ)結(jié)構(gòu)(圖的類型可以是有向圖、無(wú)向圖、有向網(wǎng)、無(wú)向網(wǎng),學(xué)生可以任選兩種類型),能夠輸入圖的頂點(diǎn)和邊的信息,并存儲(chǔ)到相應(yīng)存儲(chǔ)結(jié)構(gòu)中,而后輸出 13 圖的鄰接矩陣。
【基本要求】
給出圖的深度優(yōu)先和廣度優(yōu)先遍歷算法,并給出遍歷過(guò)程的動(dòng)態(tài)演示效果?!緦?shí)現(xiàn)說(shuō)明】
無(wú)
2.19 以隊(duì)列實(shí)現(xiàn)的仿真技術(shù)預(yù)測(cè)理發(fā)館的經(jīng)營(yíng)狀況(*)
【問(wèn)題描述】
理發(fā)館一天的工作過(guò)程如下:
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ì)頭的顧客便可開(kāi)始理發(fā)。5)若理發(fā)館每天連續(xù)營(yíng)業(yè)t分鐘,求
(1)一天內(nèi)顧客在理發(fā)館內(nèi)的平均逗留時(shí)間;(2)顧客排隊(duì)等候理發(fā)的隊(duì)列長(zhǎng)度平均值;
(3)營(yíng)業(yè)時(shí)間到點(diǎn)后仍需完成服務(wù)的收尾工作時(shí)間;(4)統(tǒng)計(jì)每天的營(yíng)業(yè)額;
(5)統(tǒng)計(jì)每天不同級(jí)別理發(fā)師的創(chuàng)收。
【基本要求】
1)模擬理發(fā)館一天的工作過(guò)程:必須采用事件驅(qū)動(dòng)的離散模型(參考教科書(shū)3.5節(jié)離散事件模擬p65);
2)每個(gè)顧客到達(dá)和下一顧客到達(dá)時(shí)間的間隔應(yīng)是隨機(jī)的; 3)理發(fā)師編號(hào)、理發(fā)師級(jí)別和每天的營(yíng)業(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í)間(簡(jiǎn)稱:理發(fā)時(shí)間);(2)intertime:下一顧客將到達(dá)的時(shí)間間隔(簡(jiǎn)稱:間隔時(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í)別??v向表示等待該理發(fā)師理發(fā)的排隊(duì)長(zhǎng)度)?!緦?shí)現(xiàn)說(shuō)明】
用戶輸入每位理發(fā)師編號(hào)、級(jí)別號(hào)和營(yíng)業(yè)的時(shí)間,結(jié)合隨機(jī)數(shù)進(jìn)行測(cè)試。
2.20 防抄襲管理系統(tǒng)(*)
【問(wèn)題描述】
對(duì)于給定的文檔,如word文檔,txt文檔等,找出文檔的相似度?!净疽蟆?/p>
(1)要求找出給定的兩個(gè)文檔的相似度以及標(biāo)出相似的地方(1:1);(2)要求找出給定的一個(gè)文檔與給定的文件夾的所有文檔的相似度,以及標(biāo)出相似的地方(1:n)(3)要求找出給定的文件夾下面所有文檔的相似度(n:n)?!緦?shí)現(xiàn)說(shuō)明】
給定相似文檔進(jìn)行測(cè)試。
2.21.設(shè)計(jì)一個(gè)停車場(chǎng)管理系統(tǒng),模擬停車場(chǎng)的運(yùn)作
設(shè)計(jì)要求:通過(guò)此程序具備以下功能:
1、要求以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng) 15 外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理;
2、要求處理的數(shù)據(jù)元素包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻;
3、該系統(tǒng)完成以下功能:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便道上的停車位置;若是車離去,則輸出汽車在停車場(chǎng)內(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ū)分大小寫(xiě)),根據(jù)分析結(jié)果對(duì)文章中每一個(gè)字符進(jìn)行赫夫曼編碼,并將編碼原則儲(chǔ)于一個(gè)獨(dú)立的文本文件中。最后,根據(jù)這個(gè)編碼原則,將英文文章轉(zhuǎn)換為01 串存儲(chǔ)于一個(gè)文本文件中,再編寫(xiě)一個(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)行間接的文件傳輸。請(qǐng)寫(xiě)出程序判斷:任意指定兩臺(tái)計(jì)算機(jī),它們之間是否可以進(jìn)行文件傳輸? 輸入要求:輸入若干測(cè)試數(shù)據(jù)組成。對(duì)于每一組測(cè)試,第1行包含一個(gè)整數(shù)n(≤10000),即網(wǎng)絡(luò)中計(jì)算機(jī)的總臺(tái)數(shù),因而每臺(tái)計(jì)算機(jī)可用1到n之間的一個(gè)正整數(shù)表示。接下來(lái)的幾行輸入格式為i c1 c2或者 c或者c c1c2或者s,其中c1和c2是兩臺(tái)計(jì)算機(jī)的 16 序號(hào),i表示在c1和c2間輸入一條連線,c表示檢查c1和c2間是否可以傳輸文件,s表示該組測(cè)試結(jié)束。
當(dāng)n為0時(shí),表示全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任何處理。
輸出要求:對(duì)每一組c開(kāi)頭的測(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ù)。
兩組測(cè)試數(shù)據(jù)之間請(qǐng)輸出一空行分隔。
2.24.教學(xué)計(jì)劃編制問(wèn)題(圖的應(yīng)用)
[問(wèn)題描述] 大學(xué)的每個(gè)專業(yè)都要制定教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限值均相等。每個(gè)專業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒(méi)有。每門課恰好占一個(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ù)給定的條件問(wèn)題無(wú)解,則報(bào)告適當(dāng)?shù)男畔ⅲ环駝t將教學(xué)計(jì)劃輸出到用戶指定的文件中。計(jì)劃的表格格式可以自己設(shè)計(jì)。
4、可設(shè)學(xué)期總數(shù)不超過(guò)12,課程總數(shù)不超過(guò)100。如果輸入的先修課程號(hào)不在該專業(yè)開(kāi)設(shè)的課程序列中,則作為錯(cuò)誤處理。
============================= 17 2.25.藥品銷售統(tǒng)計(jì)系統(tǒng)(排序應(yīng)用)
【問(wèn)題描述】
設(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,前一位為大寫(xiě)字母,后三位為數(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)行仿真程序
[問(wè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ù)不超過(guò)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ī)取值。[基本要求] 編寫(xiě)一個(gè)程序,模擬辦公大樓中全部電梯的工作過(guò)程。這個(gè)仿真程序可以用來(lái)監(jiān)測(cè)系統(tǒng)運(yùn)行情況,改善大樓管理,它也可以看成是一種游戲程序。
2.27國(guó)交通咨詢模擬
[問(wèn)題描述]
處于不同目的的旅客對(duì)交通工具有不同的要求。例如,因公出差的旅客希望在旅 途中的時(shí)間盡可能的短,出門旅游的游客則期望旅費(fèi)盡可能省,而老年旅客則要求中轉(zhuǎn)次數(shù)最少。編制一個(gè)全國(guó)城市間的交通咨詢程序,為旅客提供最優(yōu)決策的交通咨詢。
[基本要求]
(1)提供對(duì)城市信息進(jìn)行編輯(如:添加或刪除)的功能;
(2)城市之間有兩種交通工具:火車或飛機(jī),提供對(duì)全國(guó)城市交通圖和列車時(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)輸出信息:最快需要多長(zhǎng)時(shí)間才能到達(dá)或者最少需要多少旅費(fèi)才能到達(dá),并詳 細(xì)說(shuō)明依次于何時(shí)乘坐哪一趟列車或哪一次班機(jī)到何地。
三、課程設(shè)計(jì)的基本要求
1.問(wèn)題分析和任務(wù)定義。根據(jù)設(shè)計(jì)題目的要求,充分地分析和理解問(wèn)題,明確問(wèn)題要求做什么?(而不是怎么做?)限制條件是什么?
2.邏輯設(shè)計(jì)。對(duì)問(wèn)題描述中涉及的操作對(duì)象定義相應(yīng)的數(shù)據(jù)類型,并按照以數(shù)據(jù)結(jié)構(gòu)為中心的原則劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型。邏輯設(shè)計(jì)的結(jié)果應(yīng)寫(xiě)出每個(gè)抽象數(shù)據(jù)類型的定義(包括數(shù)據(jù)結(jié)構(gòu)的描述和每個(gè)基本操作的功能說(shuō)明),各個(gè)主要模塊的算法,并畫(huà)出模塊之間的調(diào)用關(guān)系圖。
3.詳細(xì)設(shè)計(jì)。定義相應(yīng)的存儲(chǔ)結(jié)構(gòu)并寫(xiě)出各函數(shù)的偽碼算法。在這個(gè)過(guò)程中,要綜合考慮系統(tǒng)功能,使得系統(tǒng)結(jié)構(gòu)清晰、合理、簡(jiǎn)單和易于調(diào)試,抽象數(shù)據(jù)類型的實(shí)現(xiàn)盡可能做到數(shù)據(jù)封裝,基本操作的規(guī)格說(shuō)明盡可能明確具體。詳細(xì)設(shè)計(jì)的結(jié)果是對(duì)數(shù)據(jù)結(jié)構(gòu)和基本操作作出進(jìn)一步的求精,20 寫(xiě)出數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的類型定義,寫(xiě)出函數(shù)形式的算法框架。
4.程序編碼。把詳細(xì)設(shè)計(jì)的結(jié)果進(jìn)一步求精為程序設(shè)計(jì)語(yǔ)言程序。同時(shí)加入一些注解和斷言,使程序中邏輯概念清楚。
5.程序調(diào)試與測(cè)試。采用自底向上,分模塊進(jìn)行,即先調(diào)試低層函數(shù)。能夠熟練掌握調(diào)試工具的各種功能,設(shè)計(jì)測(cè)試數(shù)據(jù)確定疑點(diǎn),通過(guò)修改程序來(lái)證實(shí)它或繞過(guò)它。調(diào)試正確后,認(rèn)真整理源程序及其注釋,形成格式和風(fēng)格良好的源程序清單和結(jié)果。
6.結(jié)果分析。程序運(yùn)行結(jié)果包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。算法的時(shí)間、空間復(fù)雜性分析。
7.編寫(xiě)課程設(shè)計(jì)報(bào)告并提交相關(guān)內(nèi)容
設(shè)計(jì)最終需提交的內(nèi)容包括:
a)課程設(shè)計(jì)報(bào)告(1份,a4紙打印,同時(shí)包括一份電子版)報(bào)告要求版面清晰,格式規(guī)范,否則重新編寫(xiě)。報(bào)告內(nèi)容要求包括:
(1)問(wèn)題的概述、分析及研究意義;(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é)果界面的抓取,能過(guò)說(shuō)明問(wèn)題的重要實(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ì)源程序中的類說(shuō)明(如果采用面向?qū)ο蠓椒ㄔO(shè)計(jì)),函數(shù)說(shuō)明,接口說(shuō)明,關(guān)鍵變量說(shuō)明等進(jìn)行注釋;源程序要進(jìn)行適當(dāng)?shù)目s進(jìn)編排。
d)答辯報(bào)告(編寫(xiě)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分。
通過(guò)功能的實(shí)現(xiàn)情況、界面的完成情況、軟件的實(shí)現(xiàn)情況進(jìn)行評(píng)分。
2、設(shè)計(jì)報(bào)告及使用說(shuō)明書(shū): 20分 按照?qǐng)?bào)告的要求進(jìn)行評(píng)分。
3、回答問(wèn)題:
4、平時(shí)考勤:
5、核分標(biāo)準(zhǔn):
15分 15分 100分
(90~100為優(yōu)、80~89為良、70~79為中、60~69為及格、,60以下為不及格)
五、參考書(shū)目
嚴(yán)蔚敏.《數(shù)據(jù)結(jié)構(gòu)》(c語(yǔ)言版).清華大學(xué)出版社 劉玉龍.《數(shù)據(jù)結(jié)構(gòu)與算法》.電子工業(yè)出版社.嚴(yán)蔚敏等《數(shù)據(jù)結(jié)構(gòu)題集》(c語(yǔ)言版).清華大學(xué)出版社
徐孝凱.數(shù)據(jù)結(jié)構(gòu)實(shí)用教程(c/c++描述).北京:清華大學(xué)出版社.陳慧南.數(shù)據(jù)結(jié)構(gòu)(使用c++語(yǔ)言描述).南京:東南大學(xué)出版社.殷人昆, 陶永雷, 謝若陽(yáng)等.數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcc++描述).北京:清華大學(xué)出版社.22
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目答案篇四
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目 以下8個(gè)題目任選其一。
1.排序算法比較
利用隨機(jī)函數(shù)產(chǎn)生30000個(gè)隨機(jī)整數(shù),利用插入排序、起泡排序、選擇排序、快速排序、堆排序、歸并排序等排序方法進(jìn)行排序,并且(1)統(tǒng)計(jì)每一種排序上機(jī)所花費(fèi)的時(shí)間。
(2)統(tǒng)計(jì)在完全正序,完全逆序情況下記錄的比較次數(shù)和移動(dòng)次數(shù)。(3)比較的指標(biāo)為關(guān)鍵字的比較次數(shù)和記錄的移動(dòng)次數(shù)(一次記錄交換計(jì)為3次移動(dòng))。
(4)對(duì)結(jié)果作簡(jiǎn)單分析,包括對(duì)各組數(shù)據(jù)得出結(jié)果波動(dòng)大小的解釋。2.圖的深度遍歷
對(duì)任意給定的圖(頂點(diǎn)數(shù)和邊數(shù)自定),建立它的鄰接表并輸出,然后利用堆棧的五種基本運(yùn)算(清空堆棧、壓棧、彈出、取棧頂元素、判棧空)實(shí)現(xiàn)圖的深度優(yōu)先搜索遍歷。畫(huà)出搜索順序示意圖。3.圖的廣度遍歷
對(duì)任意給定的圖(頂點(diǎn)數(shù)和邊數(shù)自定),建立它的鄰接表并輸出,然后利用隊(duì)列的五種基本運(yùn)算(置空隊(duì)列、進(jìn)隊(duì)、出隊(duì)、取隊(duì)頭元素、判隊(duì)空)實(shí)現(xiàn)圖的廣度優(yōu)先搜索遍歷。畫(huà)出搜索順序示意圖。4.二叉樹(shù)的遍歷
對(duì)任意給定的二叉樹(shù)(頂點(diǎn)數(shù)自定)建立它的二叉鏈表存貯結(jié)構(gòu),并利用棧的五種基本運(yùn)算(置空棧、進(jìn)棧、出棧、取棧頂元素、判棧空)實(shí)現(xiàn)二叉樹(shù)的先序、中序、后序三種遍歷,輸出三種遍歷的結(jié)果。畫(huà)出搜索順序示意圖。5.鏈表操作
利用鏈表的插入運(yùn)算建立線性鏈表,然后利用鏈表的查找、刪除、計(jì)數(shù)、輸出等運(yùn)算反復(fù)實(shí)現(xiàn)鏈表的這些操作(插入、刪除、查找、計(jì)數(shù)、輸出單獨(dú)寫(xiě)成函數(shù)的形式),并能在屏幕上輸出操作前后的結(jié)果。畫(huà)出搜索順序示意圖。6.一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)數(shù)器(1)輸入并建立多項(xiàng)式
(2)輸出多項(xiàng)式,輸出形式為整數(shù)序列:n,c1,e1,c2,e2……cn,en,其中n是多項(xiàng)式的項(xiàng)數(shù),ci,ei分別為第i項(xiàng)的系數(shù)和指數(shù)。序列按指數(shù)降序排列。(3)多項(xiàng)式a和b相加,建立多項(xiàng)式a+b,輸出相加的多項(xiàng)式。(4)多項(xiàng)式a和b相減,建立多項(xiàng)式a-b,輸出相減的多項(xiàng)式。用帶頭結(jié)點(diǎn)的單鏈表存儲(chǔ)多項(xiàng)式。測(cè)試數(shù)據(jù):
(1)(2x+5x8-3.1x11)+(7-5x8+11x9)(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)7.實(shí)現(xiàn)兩個(gè)鏈表的合并 基本功能要求:(1)建立兩個(gè)鏈表a和b,鏈表元素個(gè)數(shù)分別為m和n個(gè)。
(2)假設(shè)元素分別為(x1,x2,…xm),和(y1,y2, …yn)。把它們合并成一個(gè)線性表c,使得:
當(dāng)m>=n時(shí),c=x1,y1,x2,y2,…xn,yn,…,xm 當(dāng)n>m時(shí),c=y1,x1,y2,x2,…ym,xm,…,yn 輸出線性表c:
(1)用直接插入排序法對(duì)c進(jìn)行升序排序,生成鏈表d,并輸出鏈表d。測(cè)試數(shù)據(jù):
(1)a表(30,41,15,12,56,80)
b表(23,56,78,23,12,33,79,90,55)
(2)a表(30,41,15,12,56,80,23,12,34)b表(23,56,78,23,12)8.哈夫曼編碼的實(shí)現(xiàn)與應(yīng)用
(1)從文件中讀入任意一篇英文短文(至少含3000個(gè)字符,文件為ascii編碼的文本文件)
(2)統(tǒng)計(jì)不同字符在文章中出現(xiàn)的頻率(空格、換行、標(biāo)點(diǎn)等也按字符處理)(3)根據(jù)字符頻率構(gòu)造哈夫曼樹(shù),并給出每個(gè)字符的哈夫曼編碼。
(4)用哈夫曼編碼來(lái)存儲(chǔ)文件,并和輸入文本文件大小進(jìn)行比較,計(jì)算文件壓縮率
(5)根據(jù)相應(yīng)哈夫曼編碼,對(duì)編碼后的文件進(jìn)行解碼,恢復(fù)成ascii編碼的英文短文后輸出。
分析及設(shè)計(jì)步驟(供參考)
1.分析問(wèn)題,給出數(shù)學(xué)模型,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
1)分析問(wèn)題特點(diǎn),用數(shù)學(xué)表達(dá)式或其它形式描述其數(shù)學(xué)模型。2)選擇能夠體現(xiàn)問(wèn)題本身特點(diǎn)的一種或幾種邏輯結(jié)構(gòu)。
3)依據(jù)邏輯結(jié)構(gòu)和問(wèn)題特點(diǎn),設(shè)計(jì)并選擇相應(yīng)的存儲(chǔ)結(jié)構(gòu)(順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)對(duì)應(yīng)的算法實(shí)現(xiàn)有區(qū)別)。
2.算法設(shè)計(jì)
1)確定所需模塊:對(duì)于復(fù)雜的程序設(shè)計(jì),要充分利用模塊化程序設(shè)計(jì)方法和面向?qū)ο笏枷?,自頂向下,逐步?xì)化。
2)各子模塊功能描述:給出主要模塊的算法描述,用流程圖或偽代碼表示。3)模塊之間的調(diào)用關(guān)系:給出算法各模塊之間的關(guān)系圖示。3.上機(jī)實(shí)現(xiàn)程序
為提高工作效率,充分利用上機(jī)調(diào)試時(shí)間,在上機(jī)之前應(yīng)列出程序清單。
4.用有代表性的各種測(cè)試數(shù)據(jù)去驗(yàn)證算法及程序的正確性
5.算法分析及優(yōu)化
經(jīng)過(guò)上機(jī)調(diào)試,源程序運(yùn)行正確,并且實(shí)現(xiàn)算法要求的功能,解決課程設(shè)計(jì)題目中給出的問(wèn)題后,分析算法的時(shí)間復(fù)雜度和空間復(fù)雜度,如有可能對(duì)程序進(jìn)行優(yōu)化改進(jìn)。
課程設(shè)計(jì)報(bào)告范例(參考)
約瑟夫環(huán)問(wèn)題。
問(wèn)題描述:設(shè)編號(hào)為1,2,…,n(n>0)個(gè)人按順時(shí)針?lè)较驀蝗?,每人持有一個(gè)正整數(shù)密碼。開(kāi)始時(shí)任意給出一個(gè)報(bào)數(shù)上限值m,從第一個(gè)人開(kāi)始順時(shí)針?lè)较蜃?起順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),抱m的人出列,將他的密碼作為新的m值,從他在順時(shí)針?lè)较蛏系南乱粋€(gè)人起重新自1起順序報(bào)數(shù);如此下去,直到所有人全部出列為止。要求設(shè)計(jì)一個(gè)程序模擬此過(guò)程,并給出出列人的編號(hào)序列?;疽螅?/p>
(1)初始報(bào)數(shù)上限值m和測(cè)試數(shù)據(jù)在程序中確定;(2)用帶頭結(jié)點(diǎn)的單循環(huán)鏈表作數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu);(3)把帶頭結(jié)點(diǎn)的單循環(huán)鏈表作為抽象數(shù)據(jù)類型設(shè)計(jì)。測(cè)試數(shù)據(jù):
n = 7,七個(gè)人的密碼依次為3,1,7,2,4,8,4 初始報(bào)數(shù)上限值m = 20 算法思想:
jesephring()函數(shù)是實(shí)現(xiàn)問(wèn)題要求的主要函數(shù),其算法思想是:從1至m對(duì)帶頭結(jié)點(diǎn)的單循環(huán)鏈表循環(huán)計(jì)數(shù),到m時(shí),輸出該結(jié)點(diǎn)的編號(hào)值,將該結(jié)點(diǎn)的密碼作為新的m值,再?gòu)脑摻Y(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)起重新自1起循環(huán)計(jì)數(shù);如此下去,直到單循環(huán)鏈表空時(shí)循環(huán)過(guò)程結(jié)束。模塊劃分:
(1)帶頭結(jié)點(diǎn)的單循環(huán)鏈表抽象數(shù)據(jù)類型sclinlist,其中包括基本操作的函數(shù)有:初始化操作函數(shù)、插入一個(gè)結(jié)點(diǎn)操作函數(shù)、刪除一個(gè)結(jié)點(diǎn)操作函數(shù)、取一個(gè)結(jié)點(diǎn)數(shù)據(jù)操作函數(shù)和判表是否非空操作函數(shù)。該抽象數(shù)據(jù)類型文件名為sclinlist.h。
(2)void sclldeleteafter(sclnode *p),其功能是刪除帶頭結(jié)點(diǎn)的單循環(huán)鏈表中指針p所指結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)。這是對(duì)帶頭結(jié)點(diǎn)的單循環(huán)鏈表抽象數(shù)據(jù)類型sclinlist,補(bǔ)充本問(wèn)題需要的一個(gè)操作函數(shù)。(3)void jesephring(sclnode *head, int m),其功能是對(duì)帶頭結(jié)點(diǎn)的單循環(huán)鏈表head,以m為初始報(bào)數(shù)上限值實(shí)現(xiàn)問(wèn)題要求。
(4)void main(void),主函數(shù),功能是給出測(cè)試數(shù)據(jù)值,建立測(cè)試數(shù)據(jù)值的帶頭結(jié)點(diǎn)單循環(huán)鏈表,調(diào)用jesephring()函數(shù)實(shí)現(xiàn)問(wèn)題要求。數(shù)據(jù)結(jié)構(gòu):
(1)數(shù)據(jù)類型datatype定義如下: typedef struct { int number;int cipher;} datatype;
(2)帶頭結(jié)點(diǎn)單循環(huán)鏈表抽象數(shù)據(jù)類型sclinlist。
(3)帶頭結(jié)點(diǎn)單循環(huán)鏈表抽象數(shù)據(jù)類型的結(jié)點(diǎn)結(jié)構(gòu)定義如下:
typedef struct node { datatype data;struct node *next;} sclnode;源程序:
源程序存放在兩個(gè)文件中,文件sclinlist.h是帶頭結(jié)點(diǎn)單循環(huán)鏈表抽象數(shù)據(jù)類型,文件exam3-9.c是主程序。
文件sclinlist.h: typedef struct node { datatype data;struct node *next;} sclnode;/*結(jié)點(diǎn)結(jié)構(gòu)定義*/ void scllinitiate(sclnode **head)/*初始化*/ { if((*head =(sclnode *)malloc(sizeof(sclnode)))== null)exit(1);(*head)->next = *head;} int scllinsert(sclnode *head, int i, datatype x)/*插入一個(gè)結(jié)點(diǎn)*/ { sclnode *p, *q;int j;p = head->next;j = 1;while(p!= head && j < i1 && i!= 1){ printf(“插入位置參數(shù)錯(cuò)!”);return 0;} if((q =(sclnode *)malloc(sizeof(sclnode)))== null)exit(1);q->data = x;q->next = p->next;p->next = q;return 1;} int sclldelete(sclnode *head, int i, datatype *x)/*刪除一個(gè)結(jié)點(diǎn)*/ { sclnode *p, *q;int j;p = head;j = 0;while(p->next!= head && j < i1){ printf(“刪除位置參數(shù)錯(cuò)!”);return 0;} q = p->next;p->next = p->next->next;*x = q->data;free(q);return 1;} int scllget(sclnode *head, int i, datatype *x)/*取一個(gè)結(jié)點(diǎn)數(shù)據(jù)元素值*/ { sclnode *p;int j;p = head;j = 0;while(p->next!= head && j < i){ p = p->next;j++;} if(j!= i){ printf(“取元素位置參數(shù)錯(cuò)!”);return 0;} *x = p->data;return 1;} int scllnotempty(sclnode *head)/*鏈表非空否*/ { if(head->next == head)return 0;else return 1;} 文件exam3-9.c: #include
#include
typedef struct { int number;int cipher;} datatype;/*定義具體的數(shù)據(jù)類型datatype*/ #include “sclinlist.h” /*包含sclinlist抽象數(shù)據(jù)類型*/ void sclldeleteafter(sclnode *p)/*刪除p指針?biāo)附Y(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)*/ { sclnode *q = p->next;p->next = p->next->next;free(q);} void jesephring(sclnode *head, int m)/*對(duì)帶頭結(jié)點(diǎn)單循環(huán)鏈表head,初始值為m的約瑟夫環(huán)問(wèn)題函數(shù)*/ { sclnode *pre, *curr;int i;pre = head;curr = head->next;while(scllnotempty(head)== 1){ for(i = 1;i < m;i++){ pre = curr;curr = curr->next;if(curr == head){ pre = curr;curr = curr->next;} }
printf(“ %d ”, curr->);m = curr->;curr = curr->next;if(curr == head)curr = curr->next;sclldeleteafter(pre);} } void main(void){ datatype test[7]={{1,3},{2,1},{3,7},{4,2},{5,4},{6,8},{7,4}};int n = 7, m = 20, i;sclnode *head;scllinitiate(&head);/*初始化*/ for(i = 1;i <= n;i++)/*循環(huán)插入建立單循環(huán)鏈表鏈表*/ scllinsert(head, i, test[i-1]);jesephring(head, m);/*約瑟夫環(huán)問(wèn)題函數(shù)*/ } 測(cè)試情況: 程序輸出為: 6 1 4 7 2 3 5各種排序比較結(jié)果(參考)
直接插入的比較圖表***030002500直接插入的移動(dòng)圖表比較次數(shù)2000系列1******4738291100次數(shù)移動(dòng)次數(shù)2000系列1******4738291100次數(shù) 冒泡的比較次數(shù)***00冒泡的移動(dòng)圖表***00比較次數(shù)移動(dòng)次數(shù)*********1100執(zhí)行次數(shù)系列*********91100次數(shù)系列1
shell的比較次數(shù)12001000800***01200shell的移動(dòng)圖表比較次數(shù)移動(dòng)次數(shù)******1100執(zhí)行次數(shù)系列******564738291100次數(shù)系列1
快速排序的比較次數(shù)800700600快速排序的移動(dòng)圖表540520500比較次數(shù)移動(dòng)次數(shù)******4738291100執(zhí)行次數(shù)系列******8291100次數(shù)簡(jiǎn)單選擇的移動(dòng)圖表350300250系列1
簡(jiǎn)單選擇的比較次數(shù)***0比較次數(shù)移動(dòng)次數(shù)300025002000******4738291100執(zhí)行次數(shù)堆排序的比較次數(shù)107010601050系列1200系列1******8291100次數(shù) 堆排序的移動(dòng)圖表***0比較次數(shù)移動(dòng)次數(shù)*********00執(zhí)行次數(shù)系列117401720******65564738291100次數(shù)系列1
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)題目答案篇五
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目
1.運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)(限1 人完成)
任務(wù):參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1……n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1……m,女子m+1……m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)
功能要求:
1)可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī); 2)能統(tǒng)計(jì)各學(xué)校總分,3)可以按學(xué)校編號(hào)或名稱、學(xué)??偡?、男女團(tuán)體總分排序輸出;
4)可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。5)數(shù)據(jù)存入文件并能隨時(shí)查詢
6)規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱
輸出形式:有合理的提示,各學(xué)校分?jǐn)?shù)為整形
界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。
存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。(數(shù)據(jù)文件的數(shù)據(jù)讀寫(xiě)方法等相關(guān)內(nèi)容在c語(yǔ)言程序設(shè)計(jì)的書(shū)上,請(qǐng)自學(xué)解決)請(qǐng)?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲(chǔ)結(jié)構(gòu);
測(cè)試數(shù)據(jù):要求使用
1、全部合法數(shù)據(jù);
2、整體非法數(shù)據(jù);
3、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。測(cè)試數(shù)據(jù)及測(cè)試結(jié)果請(qǐng)?jiān)谏辖坏馁Y料中寫(xiě)明;
2.飛機(jī)訂票系統(tǒng)(限1 人完成)
任務(wù):通過(guò)此系統(tǒng)可以實(shí)現(xiàn)如下功能:
錄入:
可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)
查詢:
可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉(cāng));
可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;
訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)
可以訂票,如果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班;
退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;
客戶資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。
修改航班信息:
當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件
要求:
根據(jù)以上功能說(shuō)明,設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完成功能;
3.文章編輯(限1 人完成)
功能:輸入一頁(yè)文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。
靜態(tài)存儲(chǔ)一頁(yè)文章,每行最多不超過(guò)80個(gè)字符,共n行;要求(1)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。
存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能;
輸入數(shù)據(jù)的形式和范圍:可以輸入大寫(xiě)、小寫(xiě)的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。
輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出“全部字母數(shù)”、“數(shù)字個(gè)數(shù)”、“空格個(gè)數(shù)”、“文章總字?jǐn)?shù)”(3)輸出刪除某一字符串后的文章;
4.宿舍管理查詢軟件(限1 人完成)
1)任務(wù):為宿舍管理人員編寫(xiě)一個(gè)宿舍管理查詢軟件, 程序設(shè)計(jì)要求: a.采用交互工作方式
b.建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))進(jìn)行排序(冒泡、選擇、插入排序等任選一種)2)查詢菜單:(用二分查找實(shí)現(xiàn)以下操作)a.按姓名查詢
b.按學(xué)號(hào)查詢
c.按房號(hào)查詢
3)打印任一查詢結(jié)果(可以連續(xù)操作)
5.校園導(dǎo)航問(wèn)題(限1 人完成)
設(shè)計(jì)要求:設(shè)計(jì)你的學(xué)校的平面圖,至少包括10個(gè)以上的場(chǎng)所,每?jī)蓚€(gè)場(chǎng)所間可以有不同的路,且路長(zhǎng)也可能不同,找出從任意場(chǎng)所到達(dá)另一場(chǎng)所的最佳路徑(最短路徑)。
6.教學(xué)計(jì)劃編制問(wèn)題(限1 人完成)
設(shè)計(jì)要求:針對(duì)計(jì)算機(jī)系本科課程,根據(jù)課程之間的依賴關(guān)系(如離散數(shù)學(xué)應(yīng)在數(shù)據(jù)結(jié)構(gòu)之前開(kāi)設(shè))制定課程安排計(jì)劃,并滿足各學(xué)期課程數(shù)目大致相同。
7.散列法的實(shí)驗(yàn)研究(限1 人完成)
散列法中,散列函數(shù)構(gòu)造方法多種多樣,同時(shí)對(duì)于同一散列函數(shù)解決沖突的方法也可以不同。兩者是影響查詢算法性能的關(guān)鍵因素。對(duì)于幾種典型的散列函數(shù)構(gòu)造方法,做實(shí)驗(yàn)觀察,不同的解決沖突方法對(duì)查詢性能的影響。
8.圖書(shū)借閱管理系統(tǒng)(限1 人完成)
主要分為兩大功能:
1)圖書(shū)管理(增加圖書(shū)、查詢圖書(shū)、刪除圖書(shū)、圖書(shū)借閱、還書(shū)); 2)會(huì)員管理(增加會(huì)員、查詢會(huì)員、刪除會(huì)員、借書(shū)信息);
9.學(xué)生成績(jī)管理(限1 人完成)
實(shí)現(xiàn)功能:輸入、輸出、插入、刪除、查找、追加、讀入、顯示、保存、拷貝、排序、索引、分類合計(jì)、退出。
10.活期儲(chǔ)蓄帳目管理(限1 人完成)
活期儲(chǔ)蓄處理中,儲(chǔ)戶開(kāi)戶、銷戶、存入、支出活動(dòng)頻繁,系統(tǒng)設(shè)計(jì)要求: 1)能比較迅速地找到儲(chǔ)戶的帳戶,以實(shí)現(xiàn)存款、取款記賬; 2)能比較簡(jiǎn)單,迅速地實(shí)現(xiàn)插入和刪除,以實(shí)現(xiàn)開(kāi)戶和銷戶的需要。
11.二叉排序樹(shù)的實(shí)現(xiàn)(限1 人完成)
用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu)
1)以回車('n')為輸入結(jié)束標(biāo)志,輸入數(shù)列l(wèi),生成一棵二叉排 序樹(shù)t; 2)對(duì)二叉排序樹(shù)t作中序遍歷,輸出結(jié)果;
3)輸入元素x,查找二叉排序樹(shù)t,若存在含x的結(jié)點(diǎn),則刪除該結(jié)點(diǎn),并作中序遍歷(執(zhí)行操作2);否則輸出信息“無(wú)x”;
12.最小生成樹(shù)問(wèn)題(限1 人完成)
設(shè)計(jì)要求:在n個(gè)城市之間建設(shè)網(wǎng)絡(luò),只需保證連通即可,求最經(jīng)濟(jì)的架設(shè)方法。存儲(chǔ)結(jié)構(gòu)采用多種。求解算法多種。
13.通訊錄的制作(限1 人完成)
設(shè)計(jì)目的:用〈〈數(shù)據(jù)結(jié)構(gòu)〉〉中的雙向鏈表作數(shù)據(jù)結(jié)構(gòu),結(jié)合c語(yǔ)言基本知識(shí)。編寫(xiě)一個(gè)通訊錄管理系統(tǒng)。以把所學(xué)數(shù)據(jù)結(jié)構(gòu)知識(shí)應(yīng)用到實(shí)際軟件開(kāi)發(fā)中去。設(shè)計(jì)內(nèi)容:本系統(tǒng)應(yīng)完成一下幾方面的功能: 1)輸入信息——enter();2)顯示信息———display();3)查找以姓名作為關(guān)鍵字 ———search();4)刪除信息———delete();5)存盤———save();6)裝入———load();設(shè)計(jì)要求:
1)每條信息至包含 :姓名(name)街道(street)城市(city)郵編(eip)國(guó)家(state)幾項(xiàng) 2)作為一個(gè)完整的系統(tǒng),應(yīng)具有友好的界面和較強(qiáng)的容錯(cuò)能力 3)上機(jī)能正常運(yùn)行,并寫(xiě)出課程設(shè)計(jì)報(bào)告
14.哈夫曼編碼/譯碼器(限1 人完成)【問(wèn)題描述】
設(shè)計(jì)一個(gè)利用哈夫曼算法的編碼和譯碼系統(tǒng),重復(fù)地顯示并處理以下項(xiàng)目,直到選擇退出為止?!净疽蟆?/p>
1)將權(quán)值數(shù)據(jù)存放在數(shù)據(jù)文件(,位于執(zhí)行程序的當(dāng)前目錄中)2)分別采用動(dòng)態(tài)和靜態(tài)存儲(chǔ)結(jié)構(gòu)
3)初始化:鍵盤輸入字符集大小n、n個(gè)字符和n個(gè)權(quán)值,建立哈夫曼樹(shù); 4)編碼:利用建好的哈夫曼樹(shù)生成哈夫曼編碼; 5)輸出編碼;
6)設(shè)字符集及頻度如下表:
字符 空格 a b c d e f g h i j k l m 頻度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 n o p q r s t u v w x y z 頻度 57 63 15 1 48 51 80 23 8 18 1 16 1 【進(jìn)一步完成內(nèi)容】 1)譯碼功能; 2)顯示哈夫曼樹(shù); 3)界面設(shè)計(jì)的優(yōu)化。
15.圖書(shū)管理系統(tǒng)(限1 人完成)【問(wèn)題描述】
設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書(shū)管理基本業(yè)務(wù)?!净疽蟆?/p>
1)每種書(shū)的登記內(nèi)容包括書(shū)號(hào)、書(shū)名、著作者、現(xiàn)存量和庫(kù)存量; 2)對(duì)書(shū)號(hào)建立索引表(線性表)以提高查找效率; 3)系統(tǒng)主要功能如下:
*采編入庫(kù):新購(gòu)一種書(shū),確定書(shū)號(hào)后,登記到圖書(shū)帳目表中,如果表中已有,則只將庫(kù)存量增加; *借閱:如果一種書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的書(shū)證號(hào)和歸還期限,改變現(xiàn)存量; *歸還:注銷對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量?!具M(jìn)一步完成內(nèi)容】 1)系統(tǒng)功能的進(jìn)一步完善; 2)索引表采用樹(shù)表。3)設(shè)計(jì)內(nèi)容 4)程序流程圖 5)源程序
6)軟件測(cè)試報(bào)告(包括所用到的數(shù)據(jù)及結(jié)果)
16.散列表的設(shè)計(jì)與實(shí)現(xiàn)(限1 人完成)【問(wèn)題描述】
設(shè)計(jì)散列表實(shí)現(xiàn)電話號(hào)碼查找系統(tǒng)?!净疽蟆?/p>
1)設(shè)每個(gè)記錄有下列數(shù)據(jù)項(xiàng):電話號(hào)碼、用戶名、地址;
2)從鍵盤輸入各記錄,分別以電話號(hào)碼和用戶名為關(guān)鍵字建立散列表; 3)采用一定的方法解決沖突; 4)查找并顯示給定電話號(hào)碼的記錄; 5)查找并顯示給定用戶名的記錄?!具M(jìn)一步完成內(nèi)容】 1)系統(tǒng)功能的完善;
2)設(shè)計(jì)不同的散列函數(shù),比較沖突率;
3)在散列函數(shù)確定的前提下,嘗試各種不同類型處理沖突的方法,考察平均查找長(zhǎng)度的變化。
17.順序結(jié)構(gòu)、動(dòng)態(tài)鏈表結(jié)構(gòu)下的一元多項(xiàng)式的加法、減法、乘法的實(shí)現(xiàn)。(限1 人完成)
設(shè)有一元多項(xiàng)式am(x)和bn(x).am(x)=a0+a1x1+a2x2+a3x3+… +amxm
bn(x)=b0+b1x1+b2x2+b3x3+… +bnxn
請(qǐng)實(shí)現(xiàn)求m(x)= am(x)+bn(x)、m(x)= am(x)-bn(x)和m(x)= am(x)×bn(x)。要求:
1)首先判定多項(xiàng)式是否稀疏
2)分別采用順序和動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn); 3)結(jié)果m(x)中無(wú)重復(fù)階項(xiàng)和無(wú)零系數(shù)項(xiàng); 4)要求輸出結(jié)果的升冪和降冪兩種排列情況
18.利用棧求表達(dá)式的值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)。(限1 人完成)
要求:建立試題庫(kù)文件,隨機(jī)產(chǎn)生n個(gè)題目;題目涉及加減乘除,帶括弧的混合運(yùn)算;隨時(shí)可以退出;保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后的評(píng)價(jià)
19.簡(jiǎn)易文本編輯器(限1 人完成)要求:
1)具有圖形菜單界面;
2)查找,替換(等長(zhǎng),不等長(zhǎng)),插入(插串,文本塊的插入)、塊移動(dòng)(行塊,列塊移動(dòng)),刪除 3)可正確存盤、取盤; 4)正確顯示總行數(shù)。
20.二叉樹(shù)的中序、前序、后序的遞歸、非遞歸遍歷算法,層次序的非遞歸遍歷算法的實(shí)現(xiàn),應(yīng)包含建樹(shù)的實(shí)現(xiàn)。(限1 人完成)
要求:遍歷的內(nèi)容應(yīng)是千姿百態(tài)的。
樹(shù)與二叉樹(shù)的轉(zhuǎn)換的實(shí)現(xiàn)。以及樹(shù)的前序、后序的遞歸、非遞歸遍歷算法,層次序的非遞歸遍歷算法的實(shí)現(xiàn),應(yīng)包含建樹(shù)的實(shí)現(xiàn)。
要求:遍歷的內(nèi)容應(yīng)是千姿百態(tài)的。
21.學(xué)生搭配問(wèn)題(限1 人完成)
一班有m個(gè)女生,有n個(gè)男生(m不等于n),現(xiàn)要開(kāi)一個(gè)舞會(huì).男女生分別編號(hào)坐在舞池的兩邊的椅子上.每曲開(kāi)始時(shí),依次從男生和女生中各出一人配對(duì)跳舞, 本曲沒(méi)成功配對(duì)者坐著等待下一曲找舞伴.請(qǐng)?jiān)O(shè)計(jì)一系統(tǒng)模擬動(dòng)態(tài)地顯示出上述過(guò)程,要求如下: 1)輸出每曲配對(duì)情況
2)計(jì)算出任何一個(gè)男生(編號(hào)為x)和任意女生(編號(hào)為y),在第k曲配對(duì)跳舞的情況.至少求出k的兩個(gè)值.3)盡量設(shè)計(jì)出多種算法及程序,可視情況適當(dāng)加分
提示:用隊(duì)列來(lái)解決比較方便.22.猴子吃桃子問(wèn)題(限1 人完成)
有一群猴子摘了一堆桃子,他們每天都吃當(dāng)前桃子的一半且再多吃一個(gè),到了第10天就只余下一個(gè)桃子。用多種方法實(shí)現(xiàn)求出原來(lái)這群猴子共摘了多少個(gè)桃子。
要求:
1)采用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解 2)采用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解 3)采用遞歸實(shí)現(xiàn)上述求解
23.數(shù)制轉(zhuǎn)換問(wèn)題(限1 人完成)
任意給定一個(gè)m進(jìn)制的數(shù)x,請(qǐng)實(shí)現(xiàn)如下要求 1)求出此數(shù)x的10進(jìn)制值(用md表示)2)實(shí)現(xiàn)對(duì)x向任意的一個(gè)非m進(jìn)制的數(shù)的轉(zhuǎn)換。
3)至少用兩種或兩種以上的方法實(shí)現(xiàn)上述要求(用棧解決,用數(shù)組解決,其它方法解決)。
24.排序綜合(限1 人完成)
利用隨機(jī)函數(shù)產(chǎn)生n個(gè)隨機(jī)整數(shù)(20000以上),對(duì)這些數(shù)進(jìn)行多種方法進(jìn)行排序。要求:
1)至少采用三種方法實(shí)現(xiàn)上述問(wèn)題求解(提示,可采用的方法有插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序)。并把排序后的結(jié)果保存在不同的文件中。
2)統(tǒng)計(jì)每一種排序方法的性能(以上機(jī)運(yùn)行程序所花費(fèi)的時(shí)間為準(zhǔn)進(jìn)行對(duì)比),找出其中兩種較快的方法。3)如果采用4種或4種以上的方法者,可適當(dāng)加分。
25.學(xué)生成績(jī)管理系統(tǒng)(限1 人完成)現(xiàn)有學(xué)生成績(jī)信息文件1(),內(nèi)容如下 姓名 學(xué)號(hào) 語(yǔ)文 數(shù)學(xué) 英語(yǔ)
張明明 01 67 78 82 李成友 02 78 91 88 張輝燦 03 68 82 56 王露 04 56 45 77 陳東明 05 67 38 47 ….......…
學(xué)生成績(jī)信息文件2(),內(nèi)容如下: 姓名 學(xué)號(hào) 語(yǔ)文 數(shù)學(xué) 英語(yǔ)
陳果 31 57 68 82 李華明 32 88 90 68 張明東 33 48 42 56 李明國(guó) 34 50 45 87 陳道亮 35 47 58 77 ….......… 試編寫(xiě)一管理系統(tǒng),要求如下: 1)實(shí)現(xiàn)對(duì)兩個(gè)文件數(shù)據(jù)進(jìn)行合并, 2) 3)中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實(shí)現(xiàn))4)輸入一個(gè)學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果(至少采用兩種查找方法實(shí)現(xiàn))5)要求使用結(jié)構(gòu)體,鏈或數(shù)組等實(shí)現(xiàn)上述要求.6)采用多種方法且算法正確者,可適當(dāng)加分.26.圖的遍歷的實(shí)現(xiàn)(限1 人完成)要求:
1)先任意創(chuàng)建一個(gè)圖;
2)圖的dfs,bfs的遞歸和非遞歸算法的實(shí)現(xiàn) 3)要求用有向圖和無(wú)向圖分別實(shí)現(xiàn)
4)要求用鄰接矩陣、鄰接表多種結(jié)構(gòu)存儲(chǔ)實(shí)現(xiàn)
27.線索二叉樹(shù)的應(yīng)用(限1 人完成)
要求:實(shí)現(xiàn)線索樹(shù)建立、插入、刪除、恢復(fù)線索的實(shí)現(xiàn)。
28.稀疏矩陣應(yīng)用(限1 人完成)
要求:實(shí)現(xiàn)三元組,十字鏈表下的稀疏矩陣的加、轉(zhuǎn)、乘的實(shí)現(xiàn)。(1)稀疏矩陣的存儲(chǔ)(2)稀疏矩陣加法(3)矩陣乘法(4)矩陣轉(zhuǎn)置
29.樹(shù)的應(yīng)用(限1 人完成)
要求:實(shí)現(xiàn)樹(shù)與二叉樹(shù)的轉(zhuǎn)換的實(shí)現(xiàn)。以及樹(shù)的前序、后序的遞歸、非遞歸算法,層次序的非遞歸算法的實(shí)現(xiàn),應(yīng)包含建樹(shù)的實(shí)現(xiàn)。
30.文本文件單詞的檢索與計(jì)數(shù) 設(shè)計(jì)要求與分析:
要求編程建立一個(gè)文本文件,每個(gè)單詞不包含空格且不跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫(xiě);統(tǒng)計(jì)給定單詞在文本文件中出現(xiàn)的總次數(shù);檢索輸出某個(gè)單詞出現(xiàn)在文本中的行號(hào)、在該行中出現(xiàn)的次數(shù)以及位置。該設(shè)計(jì)要求可分為三個(gè)部分實(shí)現(xiàn):其一,建立文本文件,文件名由用戶用鍵盤輸入;其二,給定單詞的計(jì)數(shù),輸入一個(gè)不含空格的單詞,統(tǒng)計(jì)輸出該單詞在文本中的出現(xiàn)次數(shù);其三,檢索給定單詞,輸入一個(gè)單詞,檢索并輸出該單詞所在的行號(hào)、該行中出現(xiàn)的次數(shù)以及在該行中的相應(yīng)位置。(1).建立文本文件(2)給定單詞的計(jì)數(shù)
(3)檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置(4)主控菜單程序的結(jié)構(gòu) ① 頭文件包含 ② 菜單選項(xiàng)包含
建立文件、單詞定位、單詞計(jì)數(shù)、退出程序 ③ 選擇1-4執(zhí)行相應(yīng)的操作,其他字符為非法。
31.任意長(zhǎng)的整數(shù)加法(限1 人完成)
問(wèn)題描述:設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)兩個(gè)任意長(zhǎng)的整數(shù)的求和運(yùn)算。
基本要求:利用雙向循環(huán)鏈表,設(shè)計(jì)一個(gè)實(shí)現(xiàn)任意長(zhǎng)的整數(shù)進(jìn)行加法運(yùn)算的演示程序。要求輸入和輸出每四位一組,組間用逗號(hào)隔開(kāi)。如:1,0000,0000,0000,0000。
32.二叉平衡排序樹(shù)(限1 人完成)
問(wèn)題描述:從一棵空樹(shù)開(kāi)始創(chuàng)建,在創(chuàng)建過(guò)程中,保證樹(shù)的有序性,同時(shí)還要針對(duì)樹(shù)的平衡性做些調(diào)整。最終要把創(chuàng)建好的二叉排序樹(shù)轉(zhuǎn)換為二叉平衡排序樹(shù)?;疽螅?.創(chuàng)建(插入、調(diào)整、改組)
2.輸出
33.串的查找和替換(限1 人完成)
問(wèn)題描述:打開(kāi)一篇英文文章,在該文章中找出所有給定的單詞,然后對(duì)所有給定的單詞替換為另外一個(gè)單詞,再存盤。
34.約瑟夫環(huán)(限1 人完成)
問(wèn)題描述:編號(hào)為1,2… n的n個(gè)人按順時(shí)針?lè)较驀蝗?,每人持有一個(gè)密碼(正整數(shù))。一開(kāi)始任選一個(gè)正整數(shù)作為報(bào)數(shù)的上限值m,從第一個(gè)人開(kāi)始按順時(shí)針?lè)较蜃?開(kāi)始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),報(bào)m的人出列,將他的密碼作為新的m值,從他的順時(shí)針?lè)较蛏系南乱粋€(gè)開(kāi)始重新從1報(bào)數(shù),如此下去,直至所有人全部出列為止,設(shè)計(jì)一個(gè)程序求出出列順序。
基本要求:
1、利用單循環(huán)鏈表作為存儲(chǔ)結(jié)構(gòu)模擬此過(guò)程;
2、鍵盤輸入總?cè)藬?shù)、初始報(bào)數(shù)上限值m及各人密碼;
3、按照出列順序輸出各人的編號(hào)。
35.構(gòu)造可以使n個(gè)城市連接的最小生成樹(shù)(限1 人完成)
問(wèn)題描述:給定一個(gè)地區(qū)的n個(gè)城市間的距離網(wǎng),用prim算法或kruskal算法建立最小生成樹(shù),并計(jì)算得到的最小生成樹(shù)的代價(jià)。基本要求:
1、城市間的距離網(wǎng)采用鄰接矩陣表示,鄰接矩陣的存儲(chǔ)結(jié)構(gòu)定義采用課本中給出的定義,若兩個(gè)城市之間不存在道路,則將相應(yīng)邊的權(quán)值設(shè)為自己定義的無(wú)窮大值。要求在屏幕上顯示得到的最小生成樹(shù)中包括了哪些城市間的道路,并顯示得到的最小生成樹(shù)的代價(jià)。
2、表示城市間距離網(wǎng)的鄰接矩陣(要求至少6個(gè)城市,10條邊)
3、最小生成樹(shù)中包括的邊及其權(quán)值,并顯示得到的最小生成樹(shù)的代價(jià)。
36.客戶消費(fèi)積分管理系統(tǒng)(限1 人完成)
問(wèn)題描述:針對(duì)客戶的消費(fèi)情況,進(jìn)行客戶管理,根據(jù)客戶的消費(fèi)積分對(duì)客戶實(shí)行不同程度的打折優(yōu)惠?;疽螅?/p>
1.采用一定的存儲(chǔ)結(jié)構(gòu)進(jìn)行客戶信息的存儲(chǔ); 2.對(duì)客戶的信息可以進(jìn)行修改、刪除、添加; 3.能夠根據(jù)消費(fèi)情況進(jìn)行客戶積分的計(jì)算; 4.根據(jù)積分情況實(shí)行不同程度的打折優(yōu)惠;
37.產(chǎn)品進(jìn)銷存管理系統(tǒng)(限1 人完成)
問(wèn)題描述:針對(duì)某一種行業(yè)的庫(kù)房的產(chǎn)品進(jìn)銷存情況進(jìn)行管理?;疽螅?/p>
1.采用一定的存儲(chǔ)結(jié)構(gòu)對(duì)庫(kù)房的貨品及其數(shù)量進(jìn)行分類管理; 2.可以進(jìn)行產(chǎn)品類的添加、產(chǎn)品的添加、產(chǎn)品數(shù)量的添加;
3.能夠查詢庫(kù)房每種產(chǎn)品的總量、進(jìn)貨日期、銷出數(shù)量、銷售時(shí)間等;
38.特殊矩陣的壓縮存儲(chǔ)算法的實(shí)現(xiàn)(限1 人完成)問(wèn)題描述:對(duì)于特殊矩陣可以通過(guò)壓縮存儲(chǔ)減少存儲(chǔ)空間?;疽螅?/p>
1.針對(duì)多種特殊矩陣進(jìn)行壓縮存儲(chǔ),并能顯示壓縮后的相關(guān)地址和值; 2.輸入在原來(lái)特殊矩陣中的地址,要求能從壓縮后的矩陣中讀出相應(yīng)的值;
39.算術(shù)表達(dá)式的求解(限1 人完成)
問(wèn)題描述:給定一個(gè)算術(shù)表達(dá)式,通過(guò)程序求出最后的結(jié)果。基本要求:
1. 從鍵盤輸入要求解的算術(shù)表達(dá)式; 2. 采用棧結(jié)構(gòu)進(jìn)行算術(shù)表達(dá)式的求解過(guò)程; 3. 能夠判斷算術(shù)表達(dá)式正確與否; 4. 對(duì)于錯(cuò)誤表達(dá)式給出提示; 5. 對(duì)于正確的表達(dá)式給出最后的結(jié)果;
40.實(shí)時(shí)監(jiān)控報(bào)警系統(tǒng)(限1 人完成)問(wèn)題描述:建立一個(gè)報(bào)警和出警管理的系統(tǒng) 基本要求:
1.采用一定的存儲(chǔ)結(jié)構(gòu)存儲(chǔ)報(bào)警信息,要求有內(nèi)容、時(shí)間; 2.有一次的出警就應(yīng)該在待處理的信息中刪除這條信息; 3.記錄出警信息;
4.待處理信息過(guò)多時(shí)會(huì)發(fā)出警告;
41.車廂調(diào)度(限1 人完成)
問(wèn)題描述:假設(shè)停在鐵路調(diào)度站入口處的車廂序列的編號(hào)一次為1,2,3,4。設(shè)計(jì)一個(gè)程序,求出所有可能由此輸出的長(zhǎng)度為4的車廂序列。
42.迷宮問(wèn)題(棧)問(wèn)題描述:
以一個(gè)m*n的長(zhǎng)方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒(méi)有通路的結(jié)論?;疽螅?/p>
首先實(shí)現(xiàn)一個(gè)以鏈表作存儲(chǔ)結(jié)構(gòu)的棧類型,然后編寫(xiě)一個(gè)求解迷宮的非遞歸程序。求得的通路以三元組(i,j,d)的形式輸出,其中:(i,j)指示迷宮中的一個(gè)坐標(biāo),d表示走到下一坐標(biāo)的方向,如:對(duì)于下列數(shù)據(jù)的迷宮,輸出的一條通路為:(1,1,1),(1,2,2),(3,2,3),(3,1,2),…。測(cè)試數(shù)據(jù):
迷宮的測(cè)試數(shù)據(jù)如下:左下角(1,1)為入口,右下角(8,9)為出口。實(shí)現(xiàn)提示: 計(jì)算機(jī)解迷宮通常用的是“窮舉求解”方法,即從入口出發(fā),順著某個(gè)方向進(jìn)行探索,若能走通,則繼續(xù)往前進(jìn);否則沿著原路退回,換一個(gè)方向繼續(xù)探索,直至出口位置,求得一條通路。假如所有可能的通路都探索到而未能到達(dá)出口,則所設(shè)的迷宮沒(méi)有通路。
可以二維數(shù)組存儲(chǔ)迷宮數(shù)據(jù),通常設(shè)定入口點(diǎn)的下標(biāo)為(1,1),出口點(diǎn)的下標(biāo)為(n,n)。為處理方便起見(jiàn),可在迷宮的四周加一圈障礙。對(duì)于迷宮中任一位置,均可約定有東、南、西、北四個(gè)方向可通。選做內(nèi)容:
(1)編寫(xiě)遞歸形式的算法,求得迷宮中所有可能的通路;(2)以方陣形式輸出迷宮及其通路。43.迷宮問(wèn)題(隊(duì)列)(同上)44二叉搜索樹(shù):各種搜索樹(shù)效率比較 題目要求:
本題目要求對(duì)普通的二叉排序樹(shù)、avl樹(shù)分別實(shí)現(xiàn)制定操作,并分析比較這兩種不同數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的一系列插入和刪除操作的效率。要求測(cè)試對(duì)n個(gè)不同整數(shù)進(jìn)行下列操作的效率:(1)按遞增順序插入n個(gè)整數(shù),并按同樣順序刪除;(2)按遞增順序插入n個(gè)整數(shù),并按相反順序刪除;(3)按隨機(jī)順序插入n個(gè)整數(shù),并按隨機(jī)順序刪除;
要求n從1000到10000取值,并以數(shù)據(jù)規(guī)模n為橫軸,運(yùn)行時(shí)間為縱軸,畫(huà)出3種不同數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的操作效率比較圖。
45.病毒測(cè)試程序 本題的任務(wù)是:
當(dāng)整個(gè)網(wǎng)絡(luò)被感染后,計(jì)算有多少臺(tái)機(jī)器被某個(gè)特定變種所感染。輸入要求:
輸入由若干組測(cè)試數(shù)據(jù)組成。
每組數(shù)據(jù)的第1行包含2個(gè)整數(shù)m和n(1≤m,n≤500),接下來(lái)是一個(gè)m*n的矩陣表示網(wǎng)絡(luò)的初始感染狀態(tài),其中的正、負(fù)整數(shù)的意義如題目描述中所定義。
下面一行給出一個(gè)正整數(shù)q,是將要查詢的變種的個(gè)數(shù)。接下去的q行里,每行給出一個(gè)變種的類型。當(dāng)m或n為0時(shí),表示全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任何處理。輸出要求:
對(duì)每一組測(cè)試,在一行里輸出被某個(gè)特定變種所感染的機(jī)器數(shù)量。
46關(guān)鍵路徑問(wèn)題(限1 人完成)
問(wèn)題描述:設(shè)計(jì)一個(gè)程序求出完成整項(xiàng)工程至少需要多少時(shí)間以及整項(xiàng)工程中的關(guān)鍵活動(dòng)。基本要求:
(1)對(duì)一個(gè)描述工程的aoe網(wǎng),應(yīng)判斷其是否能夠順利進(jìn)行。
(2)若該工程能順利進(jìn)行,輸出完成整項(xiàng)工程至少需要多少時(shí)間,以及每一個(gè)關(guān)鍵活動(dòng)所依附的兩個(gè)頂點(diǎn)、最早發(fā)生時(shí)間、最遲發(fā)生時(shí)間。
47.神秘國(guó)度的愛(ài)情故事
輸入要求:輸入由若干組測(cè)試數(shù)據(jù)組成。
每組數(shù)據(jù)的第1行包含一正整數(shù)n(1≤n≤50000),代表神秘國(guó)度中小村的個(gè)數(shù),每個(gè)小村即從0到n-1編號(hào)。接下來(lái)有n-1行輸入,每行包含一條雙向道路的兩端小村的編號(hào),中間用空格分開(kāi)。之后一行包含一正整數(shù)m(1≤m≤500000),代表著該組測(cè)試問(wèn)題的個(gè)數(shù)。接下來(lái)m行,每行給出a,b,c三個(gè)小村 的編號(hào),中間用空格分開(kāi)。當(dāng)n為0時(shí),表示全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任何處理。
輸出要求:對(duì)每一組測(cè)試給定的a,b,c,在一行里輸出答案,即:如果c在a和b之間的路徑上,輸出yes,否則輸出no。
48.并查集:檢查網(wǎng)絡(luò)
題目要求:給定一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)以及機(jī)器間的雙向連線列表,每一條連線允許兩端的計(jì)算機(jī)進(jìn)行直接的文件傳輸,其他計(jì)算機(jī)間若存在一條連通路徑,也可以進(jìn)行間接的文件傳輸。請(qǐng)寫(xiě)出程序判斷:任意指定兩臺(tái)計(jì)算機(jī),它們之間是否可以進(jìn)行文件傳輸?
輸入要求:輸入若干測(cè)試數(shù)據(jù)組成。對(duì)于每一組測(cè)試,第1行包含一個(gè)整數(shù)n(≤10000),即網(wǎng)絡(luò)中計(jì)算機(jī)的總臺(tái)數(shù),因而每臺(tái)計(jì)算機(jī)可用1到n之間的一個(gè)正整數(shù)表示。接下來(lái)的幾行輸入格式為i c1 c2或者 c或者c c1c2或者s,其中c1和c2是兩臺(tái)計(jì)算機(jī)的序號(hào),i表示在c1和c2間輸入一條連線,c表示檢查c1和c2間是否可以傳輸文件,s表示該組測(cè)試結(jié)束。當(dāng)n為0時(shí),表示全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任何處理。
輸出要求:對(duì)每一組c開(kāi)頭的測(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ù)。兩組測(cè)試數(shù)據(jù)之間請(qǐng)輸出一空行分隔。
49.廣義表的應(yīng)用
由于廣義表在結(jié)構(gòu)上較線性表復(fù)雜得多,因此,廣義表的運(yùn)算也不如線性表簡(jiǎn)單。本設(shè)計(jì)要求實(shí)現(xiàn)的廣義表的建立、查找、輸出、取表頭和取表尾以及求深度、求逆表等。本設(shè)計(jì)用一個(gè)主控菜單程序控制,共分為6個(gè)子系統(tǒng)。(1).建立廣義表(2)輸出廣義表(3)結(jié)點(diǎn)的查找(4)求廣義表表頭(5)求廣義表表尾(6)求廣義表的深度
50.網(wǎng)絡(luò)流:宇宙旅行 題目要求:
在走遍了地球上的所有景點(diǎn)以后,旅游狂人開(kāi)始計(jì)劃他的宇宙旅行項(xiàng)目。經(jīng)過(guò)謹(jǐn)慎調(diào)查,他目前掌握了一張各衛(wèi)星空間站可以臨時(shí)容納的旅客人數(shù)列表。但旅客從一個(gè)星球飛往另一個(gè)星球時(shí),需要在若干衛(wèi)星空間站臨時(shí)??恐修D(zhuǎn),而這些空間站不能接待任何旅客駐留,旅客必須立刻轉(zhuǎn)乘另一艘飛船離開(kāi),所以空間站不能接待超過(guò)自己最大容量的旅客流。為了估計(jì)預(yù)算,現(xiàn)在旅游狂人需要知道終點(diǎn)星球的接待站應(yīng)該設(shè)計(jì)多大容量,才能使得每艘飛船在到達(dá)時(shí)都可以保證讓全部旅客下船。輸入要求:
輸入若干組測(cè)試數(shù)據(jù)組成。
每組測(cè)試數(shù)據(jù)的第1行包含旅行的起點(diǎn)星球和終點(diǎn)星球的名稱和一個(gè)不超過(guò)500的正整數(shù)n(n為0標(biāo)志全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任何處理)。
接下來(lái)的n行里,數(shù)據(jù)格式為:sourcei capacityi,其中sourcei和destinationi是衛(wèi)星空間站的名稱或起點(diǎn)、終點(diǎn)星球的名稱,正整數(shù)capacityi是飛船從sourcei到destinationi一次能運(yùn)載的最大旅客流量。每個(gè)名稱是由a~z之間三個(gè)大寫(xiě)字母組成的字符串,例如:zju。測(cè)試數(shù)據(jù)中不包含任何到達(dá)起點(diǎn)星球的信息以及任何從終點(diǎn)星球出發(fā)的信息。輸出要求:
對(duì)每一組測(cè)試,在一行里輸出終點(diǎn)星球接待站應(yīng)具有的最小容量,使得每艘飛船在到達(dá)時(shí)都可以保證讓全部旅客下船。
【本文地址:http://www.mlvmservice.com/zuowen/1086845.html】