數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)方案_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)方案_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)方案_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)方案_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)方案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)方案一、課程設(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á)到以下目的:n 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;n 初步掌握軟件開

2、發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;n 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;n 訓(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ù)的設(shè)計(jì)和調(diào)試要求獨(dú)立完成,遇到問題可以討論,但不可以拷貝。2、做好上機(jī)準(zhǔn)備:每次上機(jī)前,要事先編制好準(zhǔn)備調(diào)試的程序,認(rèn)真想好調(diào)試步驟和有關(guān)環(huán)境的設(shè)置方法,準(zhǔn)備好有關(guān)的文件。3、按照課程設(shè)計(jì)的具體要求建立的功能模塊,每個(gè)模塊要求按照如下幾個(gè)內(nèi)容認(rèn)真完成;其中包括:1) 需求分析:在該部分中敘述,每個(gè)模塊的功能要求;2)

3、 概要設(shè)計(jì):在此說明每個(gè)部分的算法設(shè)計(jì)說明(可以是描述算法的流程圖),每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫出該存儲(chǔ)結(jié)構(gòu)的定義。3) 詳細(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)功能部分要加上清晰的程序注釋。4) 調(diào)試分析:測(cè)試數(shù)據(jù),測(cè)試輸出的結(jié)果,時(shí)間復(fù)雜度分析和每個(gè)模塊設(shè)計(jì)和調(diào)試時(shí)存在問題的思考(問題是哪些?問題如何解決?),算法的改進(jìn)設(shè)想。5) 課程設(shè)計(jì)總結(jié):(保存在word文檔中)總結(jié)可以包括課程設(shè)計(jì)過程的收獲、遇到問題、遇到問題解決問

4、題過程的思考、程序調(diào)試能力的思考、對(duì)數(shù)據(jù)結(jié)構(gòu)這門課程的思考、在課程設(shè)計(jì)過程中對(duì)數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識(shí)等內(nèi)容;4、每組實(shí)現(xiàn)的結(jié)果必須進(jìn)行檢查和演示;程序源代碼和程序的說明文件必須上交,作為考核內(nèi)容的一部分;(上交時(shí)每人交一份,文件夾的取名規(guī)則為:“學(xué)號(hào) 姓名”,如“200413498 高魁”。該文件夾下至少包括:“源代碼”、“課程設(shè)計(jì)報(bào)告”、“可執(zhí)行文件”。由學(xué)習(xí)委員收集刻盤按規(guī)定時(shí)間統(tǒng)一上交)。5、課程設(shè)計(jì)報(bào)告需要附源代碼,可以對(duì)重點(diǎn)函數(shù)及結(jié)構(gòu)進(jìn)行說明。6、報(bào)告提交:時(shí)間:第1周星期五下午4點(diǎn)開始檢查,第2周星期一下午4點(diǎn)之前由學(xué)習(xí)委員收集上交,遲交無成績(jī)。形式:課程設(shè)計(jì)報(bào)告(要求打印)和電子文檔

5、(統(tǒng)一刻盤)。 7、所有的題目限一人完成。三、課程設(shè)計(jì)題目1.運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)任務(wù):參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n。比賽分成m個(gè)男子項(xiàng)目和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1m,女子m+1m+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é)??偡郑?)可以按學(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、查詢;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ù)讀寫方法等相關(guān)內(nèi)容在c語言程序設(shè)計(jì)的書上,請(qǐng)自學(xué)解決)請(qǐng)?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲(chǔ)結(jié)構(gòu);測(cè)試數(shù)據(jù):要求使用a、全部合法數(shù)據(jù);b、整體非法數(shù)據(jù);c、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。測(cè)試數(shù)據(jù)及測(cè)試結(jié)果請(qǐng)?jiān)谏辖坏馁Y料中寫明;2.飛機(jī)訂票系統(tǒng)任務(wù):通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:錄入:可以錄

7、入航班情況(數(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ù)文件要求:根據(jù)以上功能說明,設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完成功能;3.文章編輯功能:輸入一頁文字,程序可以統(tǒng)計(jì)出文字

8、、數(shù)字、空格的個(gè)數(shù)。靜態(tài)存儲(chǔ)一頁文章,每行最多不超過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ù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章總字?jǐn)?shù)(3)輸出刪除某一字符串后的文章;4.宿舍管理查詢軟件任務(wù):為宿舍管理人員編寫一個(gè)宿舍管理查詢軟件, 程序設(shè)計(jì)要求:a.采用交互工作方式b.建立數(shù)據(jù)

9、文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))進(jìn)行排序(冒泡、選擇、插入排序等任選一種)查詢菜單: (用二分查找實(shí)現(xiàn)以下操作)a.按姓名查詢 b.按學(xué)號(hào)查詢 c.按房號(hào)查詢打印任一查詢結(jié)果(可以連續(xù)操作)5.校園導(dǎo)航問題設(shè)計(jì)要求:設(shè)計(jì)你的學(xué)校的平面圖,至少包括10個(gè)以上的場(chǎng)所,每?jī)蓚€(gè)場(chǎng)所間可以有不同的路,且路長(zhǎng)也可能不同,找出從任意場(chǎng)所到達(dá)另一場(chǎng)所的最佳路徑(最短路徑)。6.教學(xué)計(jì)劃編制問題 設(shè)計(jì)要求:針對(duì)計(jì)算機(jī)系本科課程,根據(jù)課程之間的依賴關(guān)系(如離散數(shù)學(xué)應(yīng)在數(shù)據(jù)結(jié)構(gòu)之前開設(shè))制定課程安排計(jì)劃,并滿足各學(xué)期課程數(shù)目大致相同。7.散列法的實(shí)驗(yàn)研究散列法中,散列函數(shù)構(gòu)造方法多種多樣,同時(shí)對(duì)于同一散列

10、函數(shù)解決沖突的方法也可以不同。兩者是影響查詢算法性能的關(guān)鍵因素。對(duì)于幾種典型的散列函數(shù)構(gòu)造方法,做實(shí)驗(yàn)觀察,不同的解決沖突方法對(duì)查詢性能的影響。8.圖書借閱管理系統(tǒng) 主要分為兩大功能:圖書管理(增加圖書、查詢圖書、刪除圖書、圖書借閱、還書);會(huì)員管理(增加會(huì)員、查詢會(huì)員、刪除會(huì)員、借書信息);9.學(xué)生成績(jī)管理 實(shí)現(xiàn)功能:輸入、輸出、插入、刪除、查找、追加、讀入、顯示、保存、拷貝、排序、索引、分類合計(jì)、退出。10.活期儲(chǔ)蓄帳目管理 活期儲(chǔ)蓄處理中,儲(chǔ)戶開戶、銷戶、存入、支出活動(dòng)頻繁,系統(tǒng)設(shè)計(jì)要求:1)能比較迅速地找到儲(chǔ)戶的帳戶,以實(shí)現(xiàn)存款、取款記賬;2)能比較簡(jiǎn)單,迅速地實(shí)現(xiàn)插入和刪除,以實(shí)現(xiàn)開

11、戶和銷戶的需要。11.二叉排序樹的實(shí)現(xiàn) 用順序和二叉鏈表作存儲(chǔ)結(jié)構(gòu) 1)以回車(n)為輸入結(jié)束標(biāo)志,輸入數(shù)列l(wèi),生成一棵二叉排序樹t;2)對(duì)二叉排序樹t作中序遍歷,輸出結(jié)果;3)輸入元素x,查找二叉排序樹t,若存在含x的結(jié)點(diǎn),則刪除該結(jié)點(diǎn)并作中序遍歷(執(zhí)行操作2);否則輸出信息“無x”;12.最小生成樹問題設(shè)計(jì)要求:在n個(gè)城市之間建設(shè)網(wǎng)絡(luò),只需保證連通即可,求最經(jīng)濟(jì)的架設(shè)方法。存儲(chǔ)結(jié)構(gòu)采用多種。求解算法多種。13.通訊錄的制作設(shè)計(jì)目的:用數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表作數(shù)據(jù)結(jié)構(gòu),結(jié)合c語言基本知識(shí)。編寫一個(gè)通訊錄管理系統(tǒng)。以把所學(xué)數(shù)據(jù)結(jié)構(gòu)知識(shí)應(yīng)用到實(shí)際軟件開發(fā)中去。設(shè)計(jì)內(nèi)容:本系統(tǒng)應(yīng)完成一下幾方面的功能

12、: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)行,并寫出課程設(shè)計(jì)報(bào)告14.哈夫曼編碼/譯碼器【問題描述】:設(shè)計(jì)一個(gè)利用哈夫曼算法的編碼和譯碼系統(tǒng),重復(fù)地顯示并處理以下項(xiàng)目,直到選擇退出為止?!净疽蟆?)將權(quán)值數(shù)據(jù)存放在數(shù)據(jù)文件(文件名為data.txt,

13、位于執(zhí)行程序的當(dāng)前目錄中) 2)分別采用動(dòng)態(tài)和靜態(tài)存儲(chǔ)結(jié)構(gòu)3)初始化:鍵盤輸入字符集大小n、n個(gè)字符和n個(gè)權(quán)值,建立哈夫曼樹;4)編碼:利用建好的哈夫曼樹生成哈夫曼編碼;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)顯示哈夫曼樹;3)界面設(shè)計(jì)的優(yōu)化。15.圖書管理系統(tǒng)【問題描述】:設(shè)計(jì)

14、一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書管理基本業(yè)務(wù)。【基本要求】1)每種書的登記內(nèi)容包括書號(hào)、書名、著作者、現(xiàn)存量和庫存量;2)對(duì)書號(hào)建立索引表(線性表)以提高查找效率;3)系統(tǒng)主要功能如下:采編入庫:新購一種書,確定書號(hào)后,登記到圖書帳目表中,如果表中已有,則只將庫存量增加;借閱:如果一種書的現(xiàn)存量大于0,則借出一本,登記借閱者的書證號(hào)和歸還期限,改變現(xiàn)存量;歸還:注銷對(duì)借閱者的登記,改變?cè)摃默F(xiàn)存量?!具M(jìn)一步完成內(nèi)容】1)系統(tǒng)功能的進(jìn)一步完善;2)索引表采用樹表。16.散列表的設(shè)計(jì)與實(shí)現(xiàn)【問題描述】:設(shè)計(jì)散列表實(shí)現(xiàn)電話號(hào)碼查找系統(tǒng)?!净疽蟆?)設(shè)每個(gè)記錄有下列數(shù)據(jù)項(xiàng):電話號(hào)碼、用戶名、地址;2)從

15、鍵盤輸入各記錄,分別以電話號(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)。 設(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)= a

16、m(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)中無重復(fù)階項(xiàng)和無零系數(shù)項(xiàng);4)要求輸出結(jié)果的升冪和降冪兩種排列情況 18.利用棧求表達(dá)式的值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)。要求:建立試題庫文件,隨機(jī)產(chǎn)生n個(gè)題目;題目涉及加減乘除,帶括弧的混合運(yùn)算;隨時(shí)可以退出;保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后的評(píng)價(jià)。19.簡(jiǎn)易文本編輯器要求:1)具有圖形菜單界面;2)查找,替換(等長(zhǎng),不等長(zhǎng)),插入(插串,文本塊的插入)、塊移動(dòng)(行塊,列塊移動(dòng)),刪除3)可正確存盤、取盤;4)正確顯示總行數(shù)。20.二叉

17、樹的中序、前序、后序的遞歸、非遞歸遍歷算法,層次序的非遞歸遍歷算法的實(shí)現(xiàn),應(yīng)包含建樹的實(shí)現(xiàn)。要求:遍歷的內(nèi)容應(yīng)是千姿百態(tài)的。樹與二叉樹的轉(zhuǎn)換的實(shí)現(xiàn)。以及樹的前序、后序的遞歸、非遞歸遍歷算法,層次序的非遞歸遍歷算法的實(shí)現(xiàn),應(yīng)包含建樹的實(shí)現(xiàn)。21.學(xué)生搭配問題 一班有m個(gè)女生,有n個(gè)男生(m不等于n),現(xiàn)要開一個(gè)舞會(huì),男女生分別編號(hào)坐在舞池的兩邊的椅子上.每曲開始時(shí),依次從男生和女生中各出一人配對(duì)跳舞,本曲沒成功配對(duì)者坐著等待下一曲找舞伴。 請(qǐng)?jiān)O(shè)計(jì)一系統(tǒng)模擬動(dòng)態(tài)地顯示出上述過程,要求如下:1)輸出每曲配對(duì)情況;2)計(jì)算出任何一個(gè)男生(編號(hào)為x)和任意女生(編號(hào)為y),在第k曲配對(duì)跳舞的情況.至少求

18、出k的兩個(gè)值;3)盡量設(shè)計(jì)出多種算法及程序,可視情況適當(dāng)加分。 提示:用隊(duì)列來解決比較方便。22.猴子吃桃子問題 有一群猴子摘了一堆桃子,他們每天都吃當(dāng)前桃子的一半且再多吃一個(gè),到了第10天就只余下一個(gè)桃子。用多種方法實(shí)現(xiàn)求出原來這群猴子共摘了多少個(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)換問題 任意給定一個(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.排序綜合 利用隨

19、機(jī)函數(shù)產(chǎn)生n個(gè)隨機(jī)整數(shù)(20000以上),對(duì)這些數(shù)進(jìn)行多種方法進(jìn)行排序。要求:1)至少采用三種方法實(shí)現(xià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)現(xiàn)有學(xué)生成績(jī)信息文件1(1.txt),內(nèi)容如下姓名 學(xué)號(hào) 語文 數(shù)學(xué) 英語 張明明 01 67 78 82李成友 02 78 91 88張輝燦 03 68 82 56王露 04 56 45 7

20、7陳東明 05 67 38 47. . . . 學(xué)生成績(jī)信息文件2(2.txt),內(nèi)容如下:姓名 學(xué)號(hào) 語文 數(shù)學(xué) 英語 陳果 31 57 68 82李華明 32 88 90 68張明東 33 48 42 56李明國(guó) 34 50 45 87陳道亮 35 47 58 77. . . . 試編寫一管理系統(tǒng),要求如下:1)實(shí)現(xiàn)對(duì)兩個(gè)文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt2)抽取出三科成績(jī)中有補(bǔ)考的學(xué)生并保存在一個(gè)新文件4.txt3)合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實(shí)現(xiàn))4)輸入一個(gè)學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果(至少采用兩種查找方法實(shí)現(xiàn))5)要求使用結(jié)構(gòu)

21、體,鏈或數(shù)組等實(shí)現(xiàn)上述要求.6)采用多種方法且算法正確者,可適當(dāng)加分.26.圖的遍歷的實(shí)現(xiàn)要求:1)先任意創(chuàng)建一個(gè)圖;2)圖的dfs,bfs的遞歸和非遞歸算法的實(shí)現(xiàn)3)要求用有向圖和無向圖分別實(shí)現(xiàn)4)要求用鄰接矩陣、鄰接表多種結(jié)構(gòu)存儲(chǔ)實(shí)現(xiàn)27.線索二叉樹的應(yīng)用要求:實(shí)現(xiàn)線索樹建立、插入、刪除、恢復(fù)線索的實(shí)現(xiàn)。28.稀疏矩陣應(yīng)用要求:實(shí)現(xiàn)三元組,十字鏈表下的稀疏矩陣的加、轉(zhuǎn)、乘的實(shí)現(xiàn)。(1)稀疏矩陣的存儲(chǔ)(2)稀疏矩陣加法(3)矩陣乘法(4)矩陣轉(zhuǎn)置29.樹的應(yīng)用要求:實(shí)現(xiàn)樹與二叉樹的轉(zhuǎn)換的實(shí)現(xiàn)。以及樹的前序、后序的遞歸、非遞歸算法,層次序的非遞歸算法的實(shí)現(xiàn),應(yīng)包含建樹的實(shí)現(xiàn)。30. 文本文件單

22、詞的檢索與計(jì)數(shù)設(shè)計(jì)要求與分析:要求編程建立一個(gè)文本文件,每個(gè)單詞不包含空格且不跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫;統(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) 頭文件包含

23、菜單選項(xiàng)包含 建立文件、單詞定位、單詞計(jì)數(shù)、退出程序 選擇1-4執(zhí)行相應(yīng)的操作,其他字符為非法。 31.任意長(zhǎng)的整數(shù)加法問題描述:設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)兩個(gè)任意長(zhǎng)的整數(shù)的求和運(yùn)算?;疽螅豪秒p向循環(huán)鏈表,設(shè)計(jì)一個(gè)實(shí)現(xiàn)任意長(zhǎng)的整數(shù)進(jìn)行加法運(yùn)算的演示程序。要求輸入和輸出每四位一組,組間用逗號(hào)隔開。如:1,0000,0000,0000,0000。32. 停車場(chǎng)管理問題設(shè)計(jì)目的 掌握棧的定義、特點(diǎn)和存儲(chǔ)結(jié)構(gòu)以及相應(yīng)的操作 掌握隊(duì)列的定義、特點(diǎn)和存儲(chǔ)結(jié)構(gòu)以及相應(yīng)的操作設(shè)計(jì)內(nèi)容和要求 利用棧的順序存儲(chǔ)和隊(duì)列的鏈?zhǔn)酱鎯?chǔ)來模擬停車場(chǎng)管理。要求:設(shè)有一個(gè)可以停放n輛車的狹長(zhǎng)停車場(chǎng),只有一個(gè)大門可以供車輛進(jìn)出,車輛

24、按到達(dá)時(shí)間的先后次序從里向外停放,若停車場(chǎng)已放滿,則后來的車輛只能停放在車場(chǎng)大門外的便道上,每輛車在離開停車場(chǎng)時(shí),根據(jù)它在停車場(chǎng)內(nèi)停留時(shí)間的長(zhǎng)短交費(fèi),但在便道上的車輛離去,不收車費(fèi)。33.串的查找和替換 問題描述:打開一篇英文文章,在該文章中找出所有給定的單詞,然后對(duì)所有給定的單詞替換為另外一個(gè)單詞,再存盤。34.約瑟夫環(huán) 問題描述:編號(hào)為1,2 n的n個(gè)人按順時(shí)針方向圍坐一圈,每人持有一個(gè)密碼(正整數(shù))。一開始任選一個(gè)正整數(shù)作為報(bào)數(shù)的上限值m,從第一個(gè)人開始按順時(shí)針方向自1開始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù),報(bào)m的人出列,將他的密碼作為新的m值,從他的順時(shí)針方向上的下一個(gè)開始重新從1報(bào)數(shù),如此下

25、去,直至所有人全部出列為止,設(shè)計(jì)一個(gè)程序求出出列順序。 基本要求:利用單循環(huán)鏈表作為存儲(chǔ)結(jié)構(gòu)模擬此過程;鍵盤輸入總?cè)藬?shù)、初始報(bào)數(shù)上限值m及各人密碼;按照出列順序輸出各人的編號(hào)。 35.構(gòu)造可以使n個(gè)城市連接的最小生成樹 問題描述:給定一個(gè)地區(qū)的n個(gè)城市間的距離網(wǎng),用prim算法或kruskal算法建立最小生成樹,并計(jì)算得到的最小生成樹的代價(jià)?;疽螅篴、城市間的距離網(wǎng)采用鄰接矩陣表示,鄰接矩陣的存儲(chǔ)結(jié)構(gòu)定義采用課本中給出的定義,若兩個(gè)城市之間不存在道路,則將相應(yīng)邊的權(quán)值設(shè)為自己定義的無窮大值。要求在屏幕上顯示得到的最小生成樹中包括了哪些城市間的道路,并顯示得到的最小生成樹的代價(jià)。b、表示城市

26、間距離網(wǎng)的鄰接矩陣(要求至少6個(gè)城市,10條邊)c、最小生成樹中包括的邊及其權(quán)值,并顯示得到的最小生成樹的代價(jià)。 36.客戶消費(fèi)積分管理系統(tǒng)問題描述:針對(duì)客戶的消費(fèi)情況,進(jìn)行客戶管理,根據(jù)客戶的消費(fèi)積分對(duì)客戶實(shí)行不同程度的打折優(yōu)惠?;疽螅簂 采用一定的存儲(chǔ)結(jié)構(gòu)進(jìn)行客戶信息的存儲(chǔ);l 對(duì)客戶的信息可以進(jìn)行修改、刪除、添加;l 能夠根據(jù)消費(fèi)情況進(jìn)行客戶積分的計(jì)算;l 根據(jù)積分情況實(shí)行不同程度的打折優(yōu)惠;37.產(chǎn)品進(jìn)銷存管理系統(tǒng)問題描述:針對(duì)某一種行業(yè)的庫房的產(chǎn)品進(jìn)銷存情況進(jìn)行管理?;疽螅簂 采用一定的存儲(chǔ)結(jié)構(gòu)對(duì)庫房的貨品及其數(shù)量進(jìn)行分類管理;l 可以進(jìn)行產(chǎn)品類的添加、產(chǎn)品的添加、產(chǎn)品數(shù)量的

27、添加;l 能夠查詢庫房每種產(chǎn)品的總量、進(jìn)貨日期、銷出數(shù)量、銷售時(shí)間等;38. 特殊矩陣的壓縮存儲(chǔ)算法的實(shí)現(xiàn)問題描述:對(duì)于特殊矩陣可以通過壓縮存儲(chǔ)減少存儲(chǔ)空間?;疽螅簂 針對(duì)多種特殊矩陣進(jìn)行壓縮存儲(chǔ),并能顯示壓縮后的相關(guān)地址和值;l 輸入在原來特殊矩陣中的地址,要求能從壓縮后的矩陣中讀出相應(yīng)的值;39.算術(shù)表達(dá)式的求解問題描述:給定一個(gè)算術(shù)表達(dá)式,通過程序求出最后的結(jié)果?;疽螅簂 從鍵盤輸入要求解的算術(shù)表達(dá)式;l 采用棧結(jié)構(gòu)進(jìn)行算術(shù)表達(dá)式的求解過程;l 能夠判斷算術(shù)表達(dá)式正確與否;l 對(duì)于錯(cuò)誤表達(dá)式給出提示;l 對(duì)于正確的表達(dá)式給出最后的結(jié)果;40. 輪船渡口管理問題【問題描述】有一個(gè)渡

28、口,每條渡輪一次能裝載10輛汽車過江,過江車輛分為客車和貨車兩類,上渡輪有如下規(guī)定:同類汽車先到先上船;客車先于貨車上船;每上4輛客車才允許上一輛貨車,但若等待的客車不足4輛則用貨車填補(bǔ),反過來,若沒有貨車等待則用客車填補(bǔ);裝滿10輛后則自動(dòng)開船,當(dāng)?shù)却龝r(shí)間較長(zhǎng)時(shí)車輛不足10輛也應(yīng)人為控制發(fā)船?!緦?shí)現(xiàn)提示】此題應(yīng)建立和使用兩個(gè)鏈?zhǔn)疥?duì)列,一個(gè)為客車隊(duì)列,另一個(gè)為貨車隊(duì)列,到渡口需過江的汽車分別進(jìn)入到相應(yīng)隊(duì)列中。當(dāng)渡口有渡輪時(shí)先讓客車隊(duì)列中的4部客車出隊(duì)并開進(jìn)渡輪,再讓貨車隊(duì)列中的4部貨車出隊(duì)并開進(jìn)渡輪,若某一類車輛隊(duì)列為空則從另一隊(duì)列中補(bǔ)充。當(dāng)渡輪上裝滿10輛后則自動(dòng)開船,此時(shí)應(yīng)輸出已裝每輛車的

29、車號(hào)。若裝載不足10輛,但兩個(gè)車輛隊(duì)列全為空,應(yīng)繼續(xù)等待一段時(shí)間,若等待時(shí)間較長(zhǎng),仍不滿載則應(yīng)人為控制開船。41. 車廂調(diào)度 問題描述:假設(shè)停在鐵路調(diào)度站入口處的車廂序列的編號(hào)一次為1,2,3,4。設(shè)計(jì)一個(gè)程序,求出所有可能由此輸出的長(zhǎng)度為4的車廂序列。42.迷宮問題(棧)問題描述:以一個(gè)m*n的長(zhǎng)方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論?;疽螅菏紫葘?shí)現(xiàn)一個(gè)以鏈表作存儲(chǔ)結(jié)構(gòu)的棧類型,然后編寫一個(gè)求解迷宮的非遞歸程序。求得的通路以三元組(i,j,d)的形式輸出,其中:(i,j)指示迷宮中的一個(gè)坐標(biāo),d表示

30、走到下一坐標(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è)的迷宮沒有通路??梢远S數(shù)組存儲(chǔ)迷宮數(shù)據(jù),通常設(shè)定入口點(diǎn)的下標(biāo)為(1,1),出口點(diǎn)的下標(biāo)為(n,n)。為處理方便起見,可在迷宮的四周加一圈障礙。對(duì)于迷宮中任一位置,均可約

31、定有東、南、西、北四個(gè)方向可通。選做內(nèi)容:(1)編寫遞歸形式的算法,求得迷宮中所有可能的通路;(2)以方陣形式輸出迷宮及其通路。43.迷宮問題(隊(duì)列)(同上)44二叉搜索樹:各種搜索樹效率比較題目要求:本題目要求對(duì)普通的二叉排序樹、avl樹分別實(shí)現(xiàn)制定操作,并分析比較這兩種不同數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的一系列插入和刪除操作的效率。要求測(cè)試對(duì)n個(gè)不同整數(shù)進(jìn)行下列操作的效率:按遞增順序插入n個(gè)整數(shù),并按同樣順序刪除;按遞增順序插入n個(gè)整數(shù),并按相反順序刪除;按隨機(jī)順序插入n個(gè)整數(shù),并按隨機(jī)順序刪除;要求n從1000到10000取值,并以數(shù)據(jù)規(guī)模n為橫軸,運(yùn)行時(shí)間為縱軸,畫出3種不同數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的操作效率比較圖

32、。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(1m,n500),接下來是一個(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)鍵路徑問題 問題描述:設(shè)計(jì)一個(gè)程序求出完成整項(xiàng)工程至少需要多少時(shí)間以及整項(xiàng)工程中的關(guān)鍵活動(dòng)?;疽螅海?/p>

33、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ó)度的愛情故事輸入要求:輸入由若干組測(cè)試數(shù)據(jù)組成。每組數(shù)據(jù)的第1行包含一正整數(shù)n(1n50000),代表神秘國(guó)度中小村的個(gè)數(shù),每個(gè)小村即從0到n-1編號(hào)。接下來有n-1行輸入,每行包含一條雙向道路的兩端小村的編號(hào),中間用空格分開。之后一行包含一正整數(shù)m(1m500000),代表著該組測(cè)試問題的個(gè)數(shù)。接下來m行,每行給出a,b,c三個(gè)小村 的編號(hào),中間用空格分開。當(dāng)n為0時(shí),表示全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任

34、何處理。輸出要求:對(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)寫出程序判斷:任意指定兩臺(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ù)表示。接下來的幾行輸入格式為i c1 c2或者 c或者c c1c2或者s,其中c1

35、和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開頭的測(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.網(wǎng)絡(luò)流:宇宙旅行題目要求:在走遍了地球上的所有景

36、點(diǎn)以后,旅游狂人開始計(jì)劃他的宇宙旅行項(xiàng)目。經(jīng)過謹(jǐn)慎調(diào)查,他目前掌握了一張各衛(wèi)星空間站可以臨時(shí)容納的旅客人數(shù)列表。但旅客從一個(gè)星球飛往另一個(gè)星球時(shí),需要在若干衛(wèi)星空間站臨時(shí)??恐修D(zhuǎn),而這些空間站不能接待任何旅客駐留,旅客必須立刻轉(zhuǎn)乘另一艘飛船離開,所以空間站不能接待超過自己最大容量的旅客流。為了估計(jì)預(yù)算,現(xiàn)在旅游狂人需要知道終點(diǎn)星球的接待站應(yīng)該設(shè)計(jì)多大容量,才能使得每艘飛船在到達(dá)時(shí)都可以保證讓全部旅客下船。輸入要求:輸入若干組測(cè)試數(shù)據(jù)組成。每組測(cè)試數(shù)據(jù)的第1行包含旅行的起點(diǎn)星球和終點(diǎn)星球的名稱和一個(gè)不超過500的正整數(shù)n(n為0標(biāo)志全部測(cè)試結(jié)束,不要對(duì)該數(shù)據(jù)做任何處理)。接下來的n行里,數(shù)據(jù)格式

37、為:sourcei capacityi ,其中sourcei和destinationi是衛(wèi)星空間站的名稱或起點(diǎn)、終點(diǎn)星球的名稱,正整數(shù)capacityi是飛船從sourcei到destinationi一次能運(yùn)載的最大旅客流量。每個(gè)名稱是由az之間三個(gè)大寫字母組成的字符串,例如:zju。測(cè)試數(shù)據(jù)中不包含任何到達(dá)起點(diǎn)星球的信息以及任何從終點(diǎn)星球出發(fā)的信息。輸出要求:對(duì)每一組測(cè)試,在一行里輸出終點(diǎn)星球接待站應(yīng)具有的最小容量,使得每艘飛船在到達(dá)時(shí)都可以保證讓全部旅客下船。50 停車場(chǎng)管理問題【問題描述】:設(shè)有一個(gè)可以停放n輛汽車的狹長(zhǎng)停車場(chǎng),它只有一個(gè)大門可以供車輛進(jìn)出。車輛按到達(dá)停車場(chǎng)時(shí)間的早晚依次

38、從停車場(chǎng)最里面向大門口處停放(最先到達(dá)的第一輛車放在停車場(chǎng)的最里面)。如果停車場(chǎng)已放滿n輛車,則后來的車輛只能在停車場(chǎng)大門外的便道上等待,一旦停車場(chǎng)內(nèi)有車開走,則排在便道上的第一輛車就進(jìn)入停車場(chǎng)。停車場(chǎng)內(nèi)如有某輛車要開走,在它之后進(jìn)入停車場(chǎng)的車都必須先退出停車場(chǎng)為它讓路,待其開出停車場(chǎng)后,這些車輛再依原來的次序進(jìn)場(chǎng)。每輛車在離開停車場(chǎng)時(shí),都應(yīng)根據(jù)它在停車場(chǎng)內(nèi)停留的時(shí)間長(zhǎng)短交費(fèi)。如果停留在便道上的車未進(jìn)停車場(chǎng)就要離去,允許其離去,不收停車費(fèi),并且仍然保持在便道上等待的車輛的次序。編制程序模擬該停車場(chǎng)的管理?!緦?shí)現(xiàn)要求】: 要求程序針對(duì)每組輸入數(shù)據(jù)進(jìn)行處理后的輸出信息為:每輛車到達(dá)后的停車位置(停

39、車場(chǎng)或便道上),以及某輛車離開停車場(chǎng)時(shí)它在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。汽車的每一組模擬輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。例如,(a,1,5)表示1號(hào)牌照車在5這個(gè)時(shí)刻到達(dá),而(d,5,20)表示5號(hào)牌照車在20這個(gè)時(shí)刻離去。整個(gè)程序在輸入信息為(e,0,0)時(shí)結(jié)束。其中:a表示到達(dá)(arrival); d表示離去(departure); e表示輸入結(jié)束(end)。 【實(shí)現(xiàn)提示】:本題可用以順序棧模擬停車場(chǎng),以鏈?zhǔn)疥?duì)列模擬該停車場(chǎng)大門外的便道。需另設(shè)一個(gè)順序棧,臨時(shí)停放為給要離去的汽車讓路而從停車場(chǎng)退出來的汽車

40、。輸入的數(shù)據(jù)按到達(dá)或離去的時(shí)刻有序。棧中的每個(gè)元素表示一輛汽車,包括兩個(gè)數(shù)據(jù)項(xiàng):汽車的牌照號(hào)碼和進(jìn)入停車場(chǎng)的時(shí)刻。 【測(cè)試數(shù)據(jù)】:設(shè)n=2,輸入數(shù)據(jù)為:(a,1,5), (a,1,20), (d,1,15), (a,3,20), (a,4,25), (a,5,30), (d,2,35), (d,4,40), (e,0,0)。四、課程設(shè)計(jì)報(bào)告的規(guī)范課程設(shè)計(jì)報(bào)告要求規(guī)范書寫。應(yīng)當(dāng)包括如下六個(gè)部分:1、設(shè)計(jì)目的與內(nèi)容。進(jìn)行需求分析,確定每個(gè)模塊的功能要求。即根據(jù)設(shè)計(jì)題目的要求,充分地分析和理解問題,明確問題要求做什么?(而不是怎么做?)2、算法的基本思想進(jìn)行概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。說明用到的數(shù)據(jù)結(jié)構(gòu)定義

41、、主程序的流程及各程序模塊之間的調(diào)用關(guān)系。并用自然語言描述每個(gè)模塊所涉及的算法。3、測(cè)試數(shù)據(jù)列出對(duì)于給定的輸入所產(chǎn)生的輸出結(jié)果。4、源程序及系統(tǒng)文件使用說明附上關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的定義及關(guān)鍵算法的源代碼。5、心得體會(huì)談?wù)務(wù)n程設(shè)計(jì)過程的收獲、遇到問題及解決問題過程的思考、程序調(diào)試能力的思考、對(duì)數(shù)據(jù)結(jié)構(gòu)這門課程的思考、在課程設(shè)計(jì)過程中對(duì)數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識(shí)等內(nèi)容。6、參考文獻(xiàn)參考文獻(xiàn)要注明作者、出版社、出版日期。五、課程設(shè)計(jì)考核方法及成績(jī)?cè)u(píng)定課程設(shè)計(jì)成績(jī)分兩部分,設(shè)計(jì)報(bào)告占40,設(shè)計(jì)作品占60。六、課程設(shè)計(jì)報(bào)告的內(nèi)容設(shè)計(jì)結(jié)束后要寫出課程設(shè)計(jì)報(bào)告,以作為整個(gè)課程設(shè)計(jì)評(píng)分的書面依據(jù)和存檔材料.設(shè)計(jì)報(bào)告以規(guī)定專

42、用課程設(shè)計(jì)報(bào)告書來寫,版面整潔,圖,表要清楚,工整。正文包括以下12個(gè)內(nèi)容:1設(shè)計(jì)目的2設(shè)計(jì)內(nèi)容與要求3課題分析:以無歧義的陳述說明程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么,需要什么結(jié)果、所能達(dá)到的功能.4算法思想:闡述要達(dá)到課題分析功能準(zhǔn)備采用的算法思路。例如:本程序是掃描一個(gè)c源程序,有hash表存儲(chǔ)程序中出現(xiàn)的關(guān)鍵字,并統(tǒng)計(jì)該程序中的關(guān)鍵字出現(xiàn)的頻度。用線性探測(cè)法解決hash沖突。設(shè)hash函數(shù)為:hash(key)=(key的第一個(gè)字母序號(hào))*100+(key的最后一個(gè)字母序號(hào)) mod 41。算法思想如下:建立一個(gè)結(jié)構(gòu)體數(shù)組的hash表,存放讀入的關(guān)鍵字和其出現(xiàn)的次數(shù)。先初始化并建立該h

43、ash表,先初始化為”0”,0,再從文件中一個(gè)個(gè)讀入所有關(guān)鍵字,存放在hash表中相應(yīng)位置。從另一文件中一行行讀入,找出其中非注釋中的,也非“”中的,長(zhǎng)度2-8個(gè)字符的小寫字符串,用hash查找,看該單詞是否關(guān)鍵字,如是其出現(xiàn)次數(shù)加一,若不是就繼續(xù)下一個(gè)這樣的字符串,直至文件尾。在找這樣的字符串途中,遇到無法匹配的單或雙引號(hào)打印出出現(xiàn)在第幾行。hash表建立好后打印出來。其中核心算法分為兩塊:1.hash表的建立和hash查找。2.尋找上述的字符串。1.建立hash表的算法:該函數(shù)實(shí)參為已建立的hash表和在c源程序中找到的一個(gè)小寫字母字符串。 從該字符串key為下標(biāo)處依次開始查找,到數(shù)組末尾

44、是返回?cái)?shù)組頭(key=(key+1)%44;),分兩種情況:若先找到空位,說明該字符串不是關(guān)鍵字。則不改變hash表。若先找到了該關(guān)鍵字的紀(jì)錄,則該字符串是關(guān)鍵字,+hashkey.num;2.尋找疑似關(guān)鍵字字符串的算法 功能:依次找出被非標(biāo)識(shí)符且非”、/、/*、*/隔開的,長(zhǎng)度為2-8個(gè)字符,非注釋中的,也非“”中的小寫字母字符串,因?yàn)樗赡苁顷P(guān)鍵字。首先,一行行讀入c源程序,用續(xù)行符相連的幾行當(dāng)一行一起讀入。(1)、case 0和case 1:雙引號(hào)中的不算,跳過。 “”匹配中,“”不算,“”算。 單引號(hào)中的雙引號(hào)不算,而且單引號(hào)中不會(huì)有關(guān)鍵字,所以單引號(hào)中的也跳過。 匹配中,不算,算(2

45、)、case 2:注釋中的不算,跳過。分為/*/ /設(shè)一個(gè)標(biāo)志符flag,當(dāng)找到/* 但在該行沒找到*/ 時(shí),flag=1;此時(shí)在下行中尋找*/ ,以此類推,直至找到*/ 后flag=0,以后字符恢復(fù)有效。當(dāng)找到/時(shí)放棄該行之后的所有字符,讀入下一行(3)、case 3:讀到大寫字母、下劃線或數(shù)字時(shí),肯定該字符串不是關(guān)鍵字,則清除已存在s中的字符串,并跳過緊接在后面的允許在標(biāo)識(shí)符中出現(xiàn)的字符。(4)、case 4:讀到的是小寫字母,則存放到字符串s中。(5)、case 5:本算法以除“、/、/*、*/之外的不能在標(biāo)識(shí)符中出現(xiàn)的字符隔開整行字符串,并判斷被隔開的長(zhǎng)度2-8個(gè)字符,不含大寫字母、下

46、劃線、數(shù)字的字符串(即小寫字母字符串)是否關(guān)鍵字,是則增加其統(tǒng)計(jì)個(gè)數(shù)(判斷方法為hash查找)。5概要設(shè)計(jì): 說明本程序中用到的所有抽象數(shù)據(jù)類型的定義,主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系.包括數(shù)據(jù)結(jié)構(gòu)定義、程序結(jié)構(gòu)、界面設(shè)計(jì)。例如:(1)數(shù)據(jù)結(jié)構(gòu)定義struct edgenodeint adjvex; /該弧所指向的頂點(diǎn)的位置 edgenode * next; /指向下條條弧的指針; /定義鄰接表的邊結(jié)點(diǎn)類型typedef edgenode * * adjlist; /定義鄰接表類型(2)程序結(jié)構(gòu)main()create_hash()chu_shi_hash()guan_jian

47、_zi()print()equal()copy()panduan()change_hash()equal()如圖,main()函數(shù)調(diào)用了四個(gè)子函數(shù), chu_shi_hash()、create_hash()、guan_jian_zi()、print()。其中,chu_shi_hash()把hash表初始化為“0000” 0,標(biāo)記空位,便于以后操作。ccreate_hash()實(shí)現(xiàn)hash表的創(chuàng)建,從放關(guān)鍵字的文件一個(gè)個(gè)關(guān)鍵字,它調(diào)用了兩個(gè)子函數(shù),equal()判斷兩數(shù)組是否相等,用來確定某處是否空位.copy()把一個(gè)數(shù)組賦給另一數(shù)組,在確定插入位置插入該關(guān)鍵字。guan_jian_zi()從

48、c源程序中依次找到可能是關(guān)鍵字的字符串,然后用hash查找判斷它是否關(guān)鍵字,是則增加其統(tǒng)計(jì)次數(shù)。它調(diào)用了兩個(gè)子函數(shù):panduan(char) 和chang_hash(hash,const char ch),前者用來判斷一個(gè)字符的的類別,后者在hash表中查找判斷ch是否關(guān)鍵字,是則增加其在hash表中的統(tǒng)計(jì)量。 而chang_hash()調(diào)用了函數(shù)equal(),用來確定某處是否空位或ch。print(hash)用來打印hash表。(3)界面設(shè)計(jì)(略)6詳細(xì)設(shè)計(jì):進(jìn)一步細(xì)化概要設(shè)計(jì)中定義的各模塊或函數(shù)功能,畫出算法實(shí)現(xiàn)流程圖.7測(cè)試數(shù)據(jù)定義:定義典型的測(cè)試輸入數(shù)據(jù),包括各種體現(xiàn)課設(shè)正常功能的

49、數(shù)據(jù),也包括各種異常測(cè)試數(shù)據(jù)。測(cè)試數(shù)據(jù)應(yīng)與課題分析所要求的目標(biāo)一致。8源碼:打印9測(cè)試結(jié)果:打印例如:10算法分析:算法的時(shí)空分析(包括基本操作和其他算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析)和改進(jìn)設(shè)想;12.使用說明:13總結(jié)與體會(huì):要寫出自己的真實(shí)感受。例如一:轉(zhuǎn)眼,為期兩周的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)習(xí)即將結(jié)束了。在這次實(shí)習(xí)中,自己的c語言知識(shí)和數(shù)據(jù)結(jié)構(gòu)知識(shí)得到了鞏固,編程能力也有了一定的提高。同時(shí)也學(xué)會(huì)了解決問題的方法??偨Y(jié)起來,自己主要有以下幾點(diǎn)體會(huì):1.必須牢固掌握基礎(chǔ)知識(shí)。由于c語言是大一所學(xué)知識(shí),有所遺忘,且未掌握好這學(xué)期所學(xué)的數(shù)據(jù)結(jié)構(gòu)這門課,所以在實(shí)習(xí)之初感到棘手。不知如何下手,但在后來的

50、實(shí)習(xí)過程中自己通過看書和課外資料,并請(qǐng)教其他同學(xué),慢慢地對(duì)c語言和數(shù)據(jù)結(jié)構(gòu)知識(shí)有所熟悉。這時(shí)才逐漸有了思路。所以,這次實(shí)習(xí)之后,我告誡自己:今后一定要牢固掌握好專業(yè)基礎(chǔ)知識(shí)。2.必須培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。自己在編程時(shí)經(jīng)常因?yàn)橐恍╊愃朴凇吧倭朔痔?hào)”的小錯(cuò)誤而導(dǎo)致錯(cuò)誤,不夠認(rèn)真細(xì)致,這給自己帶來了許多麻煩。編程是一件十分嚴(yán)謹(jǐn)?shù)氖虑椋莶坏民R虎。所以在今后自己一定要培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。我想這不僅是對(duì)于程序設(shè)計(jì),做任何事都應(yīng)如此。3.這次課程設(shè)計(jì)也讓我充分認(rèn)識(shí)到數(shù)據(jù)結(jié)構(gòu)這門課的重要性。它給我們一個(gè)思想和大綱,讓我們?cè)诰幊虝r(shí)容易找到思路,不至于無章可循。同時(shí)它也有廣泛的實(shí)際應(yīng)用??傊?,在這次實(shí)習(xí)中,自己的

51、c語言以及數(shù)據(jù)結(jié)構(gòu)知識(shí)得到提高,編程能力也得到了提高。例如二:經(jīng)過一學(xué)期的數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí),我現(xiàn)在編程已經(jīng)比以前模塊化多了,這樣既不容易出錯(cuò),而且出了錯(cuò)也較容易查出,其可讀性也加強(qiáng)了。其次,我現(xiàn)在已習(xí)慣編程時(shí)寫注釋了,好像它成了我程序不可缺少的一部分似的,這不僅提高了程序的可讀性,因?yàn)槲沂侵苯由蠙C(jī)編的,這也讓我的思維更清晰,邏輯更分析的更快些。對(duì)于這次課程設(shè)計(jì)編的程序,關(guān)于hash表的建立和查找,老師上課是講過的,這一點(diǎn)上沒遇到困難,而在于建立和查找的具體環(huán)節(jié),會(huì)遇到哪幾種情況,這些分析上,開始我并沒有想周全,漏洞是在調(diào)試的時(shí)候發(fā)現(xiàn)改正的。這說明我想的還是不夠細(xì)的,要是程序很大是,出現(xiàn)這種邏

52、輯問題就很難發(fā)現(xiàn)了。最重要的是,我開始沒能很好的理解題意,最先的程序是為了建hash表而建的,這種思維是不對(duì)的,經(jīng)過吉老師的點(diǎn)播后,恍然大悟,這個(gè)思想上的突破很有幫助。還有開始編的程序是以空格分開單詞,這樣局限性就很大,經(jīng)過思考和改良,編了這個(gè)和編譯器識(shí)別關(guān)鍵字同樣效果的程序,它以標(biāo)識(shí)符允許之外的字符隔開單詞,其實(shí)際應(yīng)用性就很好了。程序的實(shí)用性是很重要的,這就是我的收獲。另外,由于編程的積累,我發(fā)現(xiàn)調(diào)試程序的速度明顯加快了,這是個(gè)很好的進(jìn)步,不過,我編程的速度仍然有待提高,我思考過了,導(dǎo)致慢的原因可能有以下幾點(diǎn):1、打字速度慢。(這點(diǎn)的確的克服)2、算法沒有很熟,只是想一想能出來,而遠(yuǎn)沒有應(yīng)到

53、的境界。3、對(duì)于數(shù)組之類的邊界問題浪費(fèi)了一定的時(shí)間,看來用筆畫一下比空想是明智些的。4、編程時(shí)精神不能太集中,不過這點(diǎn)一比以前好多了。5、這是最后,也是最重要的一點(diǎn),編的程序還不夠多,所謂熟能生巧嘛。綜上所述,我還是要好好努力,繼續(xù)歷練的,以提高編程能力目標(biāo)而繼續(xù)熱情的奮斗!14參考文獻(xiàn):列出參考的相關(guān)資料和書籍.例如:楊路明 c語言程序設(shè)計(jì)教程 北京郵電大學(xué)出版社徐孝凱 數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn) 清華大學(xué)出版社嚴(yán)蔚敏 吳偉民 數(shù)據(jù)結(jié)構(gòu)(c語言版) 清華大學(xué)出版社數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目事件排列表班 級(jí): 學(xué) 號(hào): 姓 名: 時(shí) 間: 2006/11/17-2006/12/20 一、設(shè)計(jì)目的與內(nèi)容1設(shè)計(jì)目的熟練掌握隊(duì)列的順序存儲(chǔ)表示和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論