課程設(shè)計報告模板張苗.doc
《課程設(shè)計報告模板張苗.doc》由會員分享,可在線閱讀,更多相關(guān)《課程設(shè)計報告模板張苗.doc(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
內(nèi)蒙古科技大學(xué) 本科生課程設(shè)計說明書 題 目:C語言課程設(shè)計 —— 圖的遍歷 學(xué)生姓名:張苗 學(xué) 號:1376807337 專 業(yè):計算機科學(xué)與技術(shù) 班 級:3班 指導(dǎo)教師:周李涌 內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書 課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 設(shè)計題目 圖的遍歷 指導(dǎo)教師 周李涌 時間 2013年秋學(xué)期第15周至第19周 一、教學(xué)要求 1. 掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力 2. 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能 3. 提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力 4. 訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng) 二、設(shè)計資料及參數(shù) 每個學(xué)生在教師提供的課程設(shè)計題目中任意選擇一題,獨立完成,題目選定后不可更換。 圖的遍歷 以數(shù)組表示法或鄰接表表示圖,在此基礎(chǔ)上實現(xiàn)對圖的遍歷。 要求設(shè)計類(或類模板)來描述圖,包含必要的構(gòu)造函數(shù)和析構(gòu)函數(shù),以及其他能夠完成如下功能的成員函數(shù): v 輸入圖、輸出圖 v 求圖中頂點V的第一個鄰接點 v 求圖中頂點V的下一個鄰接點 v 深度優(yōu)先遍歷圖 v 廣度優(yōu)先遍歷圖 并設(shè)計主函數(shù)測試該類(或類模板)。 三、設(shè)計要求及成果 1. 分析課程設(shè)計題目的要求 2. 寫出詳細設(shè)計說明 3. 編寫程序代碼,調(diào)試程序使其能正確運行 4. 設(shè)計完成的軟件要便于操作和使用 5. 設(shè)計完成后提交課程設(shè)計報告 四、進度安排 資料查閱與討論(1天) 系統(tǒng)分析(2天) 系統(tǒng)的開發(fā)與測試(5天) 編寫課程設(shè)計說明書和驗收(2天) 五、評分標準 1. 根據(jù)平時上機考勤、表現(xiàn)和進度,教師將每天點名和檢查 2. 根據(jù)課程設(shè)計完成情況,必須有可運行的軟件。 3. 根據(jù)課程設(shè)計報告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格。 4. 根據(jù)答辯的情況,應(yīng)能夠以清晰的思路和準確、簡練的語言敘述自己的設(shè)計和回答教師的提問 六、建議參考資料 1.《數(shù)據(jù)結(jié)構(gòu) (C語言版)》嚴蔚敏、吳偉民 主編 清華大學(xué)出版社 2004.11 2.《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編(用C/C++描述)》,李建學(xué) 等 編著,清華大學(xué)出版社 2007.2 3.《數(shù)據(jù)結(jié)構(gòu):用面向?qū)ο蠓椒ㄅcC++語言描述》,殷人昆 主編,清華大學(xué)出版社 2007.6 目 錄 內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書 I 第一章 需求分析 3 1.1 引言 3 1.2 任務(wù)概述 3 1.3 數(shù)據(jù)描述 3 1.4 功能需求 3 1.5 性能需求 3 1.6 運行需求 4 1.7 任務(wù)計劃 4 第二章 概要設(shè)計 5 2.1 總體設(shè)計 5 2.2 數(shù)據(jù)類型設(shè)計(或數(shù)據(jù)結(jié)構(gòu)設(shè)計) 5 2.3 接口設(shè)計 //函數(shù)聲明 5 2.4 運行界面設(shè)計 5 第三章 詳細設(shè)計 7 3.1 輸入模塊設(shè)計 7 3.2 輸出模塊設(shè)計 7 3.3 查找模塊設(shè)計 7 3.4 排序模塊設(shè)計 7 3.5 保存及讀取模塊設(shè)計 7 第四章 測試分析 8 4.1 測試程序執(zhí)行情況 8 4.2 出現(xiàn)的問題和解決的方法 8 第五章 用戶手冊(可選) 9 5.1 使用說明 9 5.2 運行說明 9 第六章 課程設(shè)計總結(jié) 10 附錄:程序代碼 11 參考文獻 12 致謝 13 第一章 需求分析 1.1 引言 本學(xué)期我們對《數(shù)據(jù)結(jié)構(gòu)》這門課程進行了學(xué)習(xí)。這門課程是一門實踐性非常強的課程,為了讓大家更好地理解與運用所學(xué)知識,提高動手能力,我們進行了此次課程設(shè)計實習(xí)。這次課程設(shè)計不但要求實習(xí)者掌握《數(shù)據(jù)結(jié)構(gòu)》中的各方面知識,還要求實習(xí)者具備一定的C語言基礎(chǔ)和編程能力。具體說來,這次課程設(shè)計主要有兩大方面目的。一是讓實習(xí)者通過實習(xí)掌握《數(shù)據(jù)結(jié)構(gòu)》中的知識。對于《圖的存儲與遍歷》這一課題來說,所要求掌握的數(shù)據(jù)結(jié)構(gòu)知識主要有:圖的鄰接表存貯結(jié)構(gòu)、隊列的基本運算實現(xiàn)、鄰接表的算法實現(xiàn)、圖的廣度優(yōu)先搜索周游算法實現(xiàn)、圖的深度優(yōu)先搜索周游算法實現(xiàn)。二是通過實習(xí)鞏固并提高實習(xí)者的C語言知識,并初步了解Visual C++的知識,提高其編程能力與專業(yè)水平。 1.2 任務(wù)概述 (1) 輸入的形式和輸入值的范圍; (2) 輸出的形式; (3) 程序所能達到的功能; (4) 測試數(shù)據(jù):包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。 1.3 數(shù)據(jù)描述 例子:輸入頂點數(shù)和邊數(shù):4 5 接著輸入頂點字符串:1 2 3 4 1.4 功能需求 以數(shù)組表示法或鄰接表表示圖,在此基礎(chǔ)上實現(xiàn)對圖的遍歷。 要求設(shè)計類(或類模板)來描述圖,包含必要的構(gòu)造函數(shù)和析構(gòu)函數(shù),以及其他能夠完成如下功能的成員函數(shù): v 輸入圖、輸出圖 v 求圖中頂點V的第一個鄰接點 v 求圖中頂點V的下一個鄰接點 v 深度優(yōu)先遍歷圖 v 廣度優(yōu)先遍歷圖 并設(shè)計主函數(shù)測試該類(或類模板)。 1.5 運行需求 在codeblock上運行,c語言程序 1.6 任務(wù)計劃 我們需要先進行總體設(shè)計,有一個大致的方向,然后我們需要把數(shù)據(jù)的結(jié)構(gòu)類型確定下來,第三步要把函數(shù)接口設(shè)計出來,第四步把運行界面設(shè)計,我就把大致程序框架做了出來。 我們接下來就應(yīng)該進行詳細的設(shè)計來完成所需要的功能了 第二章 概要設(shè)計 2.1 總體設(shè)計 圖的實現(xiàn) 深度優(yōu)先遍歷 廣度優(yōu)先遍歷 輸出圖 輸入圖 創(chuàng)建圖 訪問下一個鄰接頂點 訪問鄰接頂點 2.2 數(shù)據(jù)類型設(shè)計(或數(shù)據(jù)結(jié)構(gòu)設(shè)計) 1.定義結(jié)點結(jié)構(gòu)類型 typedef struct node{ int adjvex; struct node *next; }EdgeNode; 2.定義虛擬結(jié)點結(jié)構(gòu)類型 typedef struct vnode{ char vertex; EdgeNode *firstedge; }VertexNode; 3.鄰接表類型 typedef struct { AdjList adjlist; int n,e; } ALGraph; 2.3 接口設(shè)計 可參考用以下表格形式: 表2.1:函數(shù)列表 函數(shù)名 函數(shù)格式 //即函數(shù)首部 函數(shù)功能 CreatALGraph 創(chuàng)建圖 DFS 深度優(yōu)先遍歷 BFS 廣度優(yōu)先遍歷 第三章 詳細設(shè)計 3.1圖的存儲 本課題要求采取鄰接表的存儲結(jié)構(gòu)。鄰接表是一種鏈式的存儲結(jié)構(gòu),在鄰接表中,對圖中每個頂點建立一個單鏈表,第i個單鏈表中的結(jié)點表示依附于頂點Vi的邊(對有向圖是以頂點Vi為尾的?。?。每個結(jié)點由3個域組成,其中鄰接點域(adjvex)指示與頂點Vi鄰接的點在圖中的位置,鏈域(nextarc)指示下一條邊或弧的結(jié)點;數(shù)據(jù)域(info)存儲和邊或弧相關(guān)的信息,如權(quán)值等。 所以一開始必須先定義鄰接表的邊結(jié)點類型以及鄰接表類型,并對鄰接表進行初始化,然后根據(jù)所輸入的相關(guān)信息,包括圖的頂點數(shù)、邊數(shù)、是否為有向,以及各條邊的起點與終點序號,建立圖的鄰接表。此時要分兩種情況:有向圖與無向圖。對于無向圖,一條邊的兩的個頂點,互為鄰接點,所以在存儲時,應(yīng)向起點的單鏈表表頭插入一邊結(jié)點,即終點。同時將終點的單鏈表表頭插入一邊結(jié)點,即起點。對于有向圖,只能向起點的單鏈表的表頭插入一個邊結(jié)點,即終點。但不能反過來。至于鄰接表的輸出,由于不了解C++中的繪圖操作,故采用for語句輸出各結(jié)點,并配合一些符號完成鄰接表的輸出。 3.2 圖的遍歷 3.2.1 圖的深度優(yōu)先遍歷 假設(shè)初始狀態(tài)是圖中所有頂點未曾被訪問,深度優(yōu)先遍歷可以從圖的初始點出發(fā),訪問初始點,然后依次從v未被訪問的鄰接點出發(fā)深度優(yōu)先遍歷圖,直至圖中所有和v有路徑相通的頂點都被訪問到;若此時仍有頂點未被訪問到,則從另一個未被訪問的頂點出發(fā),重復(fù)上述過程,直至所有點都被訪問到為止。這是一個遞歸的過程。所以在實現(xiàn)深度優(yōu)先遍歷的過程中必須遞歸調(diào)用深度優(yōu)先搜索函數(shù)。而且在深度優(yōu)先搜索函數(shù)中必須設(shè)一標志數(shù)組以標記結(jié)點是否被訪問。 具體過程應(yīng)為:先訪問初始點Vi,并標志其已被訪問。此時定義一指向邊結(jié)點的指針p,并建立一個while()循環(huán),以指針所指對象不為空為控制條件,當(dāng)Vi的鄰接點未被訪問時,遞歸調(diào)用深度優(yōu)先遍歷函數(shù)訪問之。然后將p指針指向下一個邊結(jié)點。這樣就可以完成圖的深度優(yōu)先遍歷了。 void DFSM(ALGraph *G,int i) { EdgeNode *p; printf("%c ",G->adjlist[i].vertex); visited[i]=TRUE; p=G->adjlist[i].firstedge; while(p) { DFSM(G,p->adjvex); p=p->next; } } void DFS(ALGraph *G) { int i; for(i=0;i- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 課程設(shè)計 報告 模板
鏈接地址:http://www.820124.com/p-8383808.html