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