




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
中北大學數(shù)據(jù)結(jié)構(gòu)課程設(shè)計說明書
學生姓名:張寧學號:102101?1524
學院:軟件學院專業(yè):軟件工程題目:教學計劃編制?問題指導教師何志英
2011年1設(shè)計任務(wù)概述?1.1問題描述大學的每個專?業(yè)都要制定教?學計劃。針對軟件工程?本專業(yè)制定一?個教學計劃。假設(shè)任何專業(yè)?都有固定的學?習年限,每學年含兩學?期,每學期的時間?長度和學分上?限值均相等,每個專業(yè)開設(shè)?的課程都是確?定的,而且課程在開?設(shè)時間的安排?必須滿足先修?關(guān)系。每門課程有哪?些先修課程是?確定的,可以有任意多?門,也可以沒有。每門課恰好占?一個學期。試在這樣的前?提下設(shè)計一個?教學計劃編制?程序。1.2需求分析根據(jù)問題描述?及要求,可知設(shè)計中需?要定義先修關(guān)?系的AOV網(wǎng)?圖中的頂點及?弧邊的結(jié)構(gòu)體?,在運行結(jié)果中?將圖的信息顯?示出來,利用先修關(guān)系?將課程排序,最后解決問題?輸出每學期的?課程。(1)用學分來實現(xiàn)?每學期課程數(shù)?大致相同;(2)根據(jù)教學計劃?中的課程及其?關(guān)系和學分來?定義圖的頂點?及邊的結(jié)構(gòu)體?。(3)創(chuàng)建圖Cre?ateGra?ph():結(jié)合先修關(guān)系?的AOV網(wǎng),采用鄰接表存?儲。(4)菜單OUTP?UT():顯示代號所對?應(yīng)課程及課程?的先修課程。(5)拓撲排序To?poSort?(G):將課程排序后?并決定出每學?期所學課程。(6)輸出圖G的信?息Displ?ay(G):將圖的頂點和?弧邊輸出。1.3本程序包括?2個模塊:主程序模塊和?拓撲排序模塊?。拓撲排序模塊?主程序模塊拓撲排序模塊?主程序模塊本設(shè)計所采用?的數(shù)據(jù)結(jié)構(gòu)(1)voidOUTPUT?()//顯示代號所對?應(yīng)課程及課程?的先修課程(2)intLocate?Vex(ALGrap?hG,Vertex?Typeu)
//查找圖中某個?頂點位置
(3)intCreate?Graph(ALGrap?hG)//采用鄰接表存?儲結(jié)構(gòu)(4)voidDispla?y(ALGrap?hG)//輸出圖G的信?息(5)voidFindIn?Degree?(ALGrap?hG,intindegr?ee[])//求頂點的入度?(6)voidpuandu?an(Vertex?Typestr,struct?Namename[],intn)(7)intInitSt?ack(SqStac?k&S)//棧的初始化(8)intStackE?mpty(SqStac?kS)//判空(9)intPop(SqStac?k&S,SElemT?ype&e)//出棧(10)intPush(SqStac?k&S,SElemT?ypee)//入棧(11)intTopoSo?rt(ALGrap?hG,AdjLis?tTemp,struct?Namename[])//拓撲排序(12)voidmain()//主函數(shù)功能模塊詳細?設(shè)計3.1詳細設(shè)計思?想12main()12main()13411256789103.2核心代碼3.21.數(shù)據(jù)類型定義?(1)頭結(jié)點,表結(jié)點,鄰接表的定義?typede?fcharVertex?Type[MAX_NA?ME];intTotalT?erms;
//學期總數(shù)intMaxSco?res;
//學分上限typede?fstruct?ArcNod?e{
intadjvex?;
//該弧所指向的?頂點的位置弧的節(jié)點結(jié)構(gòu)?
struct?ArcNod?e*nextar?c;
//指向下一條弧?的指針}ArcNod?e;
//表結(jié)點
typede?fstruct?VNode
{
Vertex?Typedata;
//頂點信息
intgrades?;
//存儲學分信息?
ArcNod?e*firsta?rc;
//指向第一條依?附該頂點的弧?的指針}VNode,AdjLis?t[MAX_VE?RTEX_N?UM];
//頭結(jié)點
typede?fstruct?ALGrap?h//鄰接表{
AdjLis?tvertic?es;
//vertic?es存儲課程名
intvexnum?,arcnum?;
//圖的當前頂點?數(shù)和弧數(shù)}ALGrap?h;鄰接表的基本?操作:voidCreatG?raph(ALGrap?h*);創(chuàng)建鄰接表voidFindIn?Degree?(ALGrap?h,int*);求一個結(jié)點的?入度intTopoSo?rt(ALGrap?hG,AdjLis?tTemp,struct?Namename[])//拓撲排序(2)棧的定義:typede?fintSElemT?ype;
//棧類型#define?Stack_?NUM20
//存儲空間初始?分配量#define?Stack_?MoreNU?M5
//存儲空間分配?增量typede?fstruct?SqStac?k{
SElemT?ype*base;
SElemT?ype*top;
intstacks?ize;
//分配的存儲空?間}SqStac?k;基本操作:voidInitSt?ack(SqStac?k*S);棧的初始化intStackE?mpty(SqStac?kS);判斷棧是否為?空voidPush(SqStac?k*S,int);入棧操作intPop(SqStac?k*S,int*e);出棧操作3.22系統(tǒng)主要?子程序詳細設(shè)?計(1)主函數(shù)模塊設(shè)?計voidmain(){ALGrap?hG;AdjLis?tTemp;struct?Namename[N]={{"C1"},{"C2"},{"C3"},{"C4"},{"C5"},{"C6"},{"C7"},{"C8"},{"C9"},{"C10"},{"C11"},{"C12"}};OUTPUT?();printf?("**********教學計劃編制?問題**********\n");printf?("請輸入學期總?數(shù):");scanf("%d",&TotalT?erms);printf?("請輸入學期的?學分上限:");scanf("%d",&MaxSco?res);Create?Graph(G);Displa?y(G);TopoSo?rt(G,Temp,name);printf?("OK\n");scanf("*c");}(2)拓撲排序模塊?設(shè)計intTopoSo?rt(ALGrap?hG,AdjLis?tTemp,struct?Namename[]){inti,k,j=0,count,indegr?ee[MAX_VE?RTEX_N?UM];SqStac?kS;ArcNod?e*p;FindIn?Degree?(G,indegr?ee);//對各頂點求入?度InitSt?ack(S);//初始化棧for(i=0;i<G.vexnum?;++i)//建零入度頂點?棧Sif(!indegr?ee[i])Push(S,i);//入度為0者進?棧count=0;//對輸出頂點計?數(shù)while(!StackE?mpty(S)){Pop(S,i);printf?("%s(%d分),",G.vertic?es[i].data,G.vertic?es[i].grades?);Temp[j++]=G.vertic?es[i];//將當前的拓撲?序列保存起來?++count;//輸出i號頂點?并計數(shù)for(p=G.vertic?es[i].firsta?rc;p;p=p->nextar?c)//對i號頂點的?每個鄰接點的?入度減1{k=p->adjvex?;if(!(--indegr?ee[k]))//若入度減為0?,則入棧Push(S,k);}}if(count<G.vexnum?){printf?("此有向圖有回?路無法完成拓?撲排序");return?ERROR;}elseprintf?("為一個拓撲序?列");printf?("\n");intq=1,Z=0;while(q<=TotalT?erms){intC=Temp[Z].grades?;printf?("\n第%d個學期應(yīng)學?課程:",q);while(C<=MaxSco?res){C=C+Temp[Z+1].grades?;if(Z<G.vexnum?){puandu?an(Temp[Z].data,name,N);++Z;}}printf?("\n");if(q==TotalT?erms)printf?("\n課程編制完?成!");q++;}return?OK;}3.3程序運行結(jié)果?(1)主界面設(shè)計顯示課程代號?所對應(yīng)課程及?先修課程。(2)輸入1-16的任意數(shù)?回車(3)按要求輸入學?期數(shù),學分上限,課程數(shù),課程號和各課?程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2035年全球及中國礦棉保溫行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報告
- 2025年日用玻璃制品合作協(xié)議書
- 2025年貨廂后蓋項目發(fā)展計劃
- 2025年LED超大屏幕顯示器項目發(fā)展計劃
- 2025年三片式球閥項目建議書
- 氣凝膠基隔熱耐火復(fù)合材料行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 管道配件批發(fā)企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 人造板材批發(fā)企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 男式襯衫企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 棉花批發(fā)企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 北京豐臺區(qū)2024第二批事業(yè)單位招聘55人歷年公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 枯死松樹清理服務(wù)投標方案(完整技術(shù)標)
- 第4課 中古時期的亞洲(教學課件)-【中職專用】《世界歷史》同步課堂(同課異構(gòu))(高教版2023?基礎(chǔ)模塊)
- 《監(jiān)理企業(yè)安全責任清單(2.0版)參考模板》
- 團隊統(tǒng)一思想培訓
- 小區(qū)停車收費方案
- 《讓我們的家更美好》教學設(shè)計
- 提升漁業(yè)與水產(chǎn)養(yǎng)殖技術(shù)的高效養(yǎng)殖模式
- 曲率系數(shù)不均勻系數(shù)自動計算
- 垃圾分揀項目可行性報告
- 陜09J08 樓梯 欄桿 欄板圖集
評論
0/150
提交評論