![教學(xué)編制問(wèn)題c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view8/M01/36/35/wKhkGWcwHL2AJY8pAAFWLdNMESI237.jpg)
![教學(xué)編制問(wèn)題c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view8/M01/36/35/wKhkGWcwHL2AJY8pAAFWLdNMESI2372.jpg)
![教學(xué)編制問(wèn)題c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view8/M01/36/35/wKhkGWcwHL2AJY8pAAFWLdNMESI2373.jpg)
![教學(xué)編制問(wèn)題c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view8/M01/36/35/wKhkGWcwHL2AJY8pAAFWLdNMESI2374.jpg)
![教學(xué)編制問(wèn)題c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view8/M01/36/35/wKhkGWcwHL2AJY8pAAFWLdNMESI2375.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告主題:教學(xué)計(jì)劃編制問(wèn)題班級(jí):計(jì)科四班姓名:熊金蓮指導(dǎo)老師:郭艷內(nèi)容概要題目要求教學(xué)計(jì)劃編制問(wèn)題的要點(diǎn)函數(shù)模塊及各函數(shù)可實(shí)現(xiàn)的功能簡(jiǎn)介具體的源代碼使用說(shuō)明實(shí)驗(yàn)心得一:題目要求如下:大學(xué)的每個(gè)專(zhuān)業(yè)都要制定教學(xué)計(jì)劃。假設(shè)任何專(zhuān)業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限值均相等。每個(gè)專(zhuān)業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門(mén)課程有哪些先修課程是確定的,可以有任意多門(mén),也可以沒(méi)有。每門(mén)課恰好占一個(gè)學(xué)期。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序。要求(1)輸入?yún)?shù)包括:學(xué)期總數(shù),一學(xué)期的學(xué)分上限,每門(mén)課的課程號(hào)(固定占3位的字母數(shù)字串)學(xué)分和直接先修課的課程號(hào)。(2)允許用戶指定下列兩種編排策略之一:一是使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻;二是使課程盡可能地集中在前幾個(gè)學(xué)期中。(3)若根據(jù)給定的條件問(wèn)題無(wú)解,則報(bào)告適當(dāng)?shù)男畔?;否則將教學(xué)計(jì)劃輸出到用戶指定的文件中。計(jì)劃的表格格式自行設(shè)計(jì)。二:教學(xué)計(jì)劃編制問(wèn)題的要點(diǎn):根據(jù)問(wèn)題描述及要求,可知設(shè)計(jì)中需要定義先修關(guān)系的AOV網(wǎng)圖中的頂點(diǎn)及弧邊的結(jié)構(gòu)體,在運(yùn)行結(jié)果中將圖的信息顯示出來(lái),利用先修關(guān)系將課程排序,最后解決問(wèn)題——輸出每學(xué)期的課程。采用第二種策略:使課程盡可能地集中在前幾個(gè)學(xué)期中;根據(jù)教學(xué)計(jì)劃中的課程及其關(guān)系和學(xué)分定義圖的頂點(diǎn)和邊的結(jié)構(gòu)體創(chuàng)建圖CreateGraph():結(jié)合先修關(guān)系的AOV網(wǎng),顯示代號(hào)所對(duì)應(yīng)課程及課程的先修課程4)拓?fù)渑判騎opologicalOrder(G):將課程排序后并決定出每學(xué)期所學(xué)課程,輸出圖G的信息Display(G):將圖的頂點(diǎn)和弧邊輸出三:程序模塊及可實(shí)現(xiàn)的功能簡(jiǎn)介:1)、圖的鄰接表的存儲(chǔ)表示,即結(jié)構(gòu)體的定義typedefstructArcNode{ intAdjOfV;ata);scanf("%s",va);getchar();while(va[0]!='0'){i=LocateVex(G,va);irst;irst=p;scanf("%s",va);getchar();}}3)、輸出圖的頂點(diǎn)和邊printf("%d個(gè)頂點(diǎn)",;for(i=0;i<;++i)printf("%4s",[i].data);printf("\n%d條弧邊:\n",;for(i=0;i<;i++){p=[i].first;while(p) {printf("%s---->%s\n",[i].data,[p->AdjOfV].data);p=p->next;}}4)、通過(guò)棧實(shí)現(xiàn)拓?fù)渑判騣ntTopologicalOrder(ALGraphG,AdjListR,structNamename[]){ inti,k,j=0,count,indegree[MAX_VER]; SqStackS; ArcNode*p; FindInDegree(G,indegree);ata,[i].grades); R[j++]=[i];irst;p;p=p->next)rades; printf("\n第%d個(gè)學(xué)期應(yīng)學(xué)課程:",q); while(C<=MaxScores) { C=C+R[Z+1].grades; if(Z< { CmpOfStr(R[Z].data,name,N);/*讓C1~C12分別與12門(mén)課程對(duì)應(yīng)起來(lái)*/ ++Z; } } printf("\n"); if(q==TotalOfTerms)printf("\nOKOver!"); q++; } return1;/**/}拓?fù)渑判蛞c(diǎn):依次將入度為0的頂點(diǎn)存入InDegree中,對(duì)每個(gè)頂點(diǎn)求入度,并存入數(shù)組InDegree[i]中(i=0…n),初始化棧Stack,Counter=0,對(duì)以i號(hào)頂點(diǎn)為尾弧的每個(gè)鄰接點(diǎn)的入度減1,并將入度減1后為零的頂點(diǎn)號(hào)壓入棧中,輸出i,計(jì)數(shù)器加1(Counter++),推出棧頂?shù)囊粋€(gè)元素(入度為零的頂點(diǎn)號(hào))至i,輸出i,計(jì)數(shù)器加1(Counter++),堆棧是否為空,n個(gè)頂點(diǎn)全輸出,依次將入度為0的頂點(diǎn)存入InDegree中5)根據(jù)學(xué)分上限決定出每學(xué)期應(yīng)學(xué)課程,其中R[]中存儲(chǔ)的是經(jīng)過(guò)拓?fù)渑判蚝蟮恼n程先后順序。 intq=1,Z=0; while(q<=TotalOfTerms) { intC=R[Z].grades; printf("\n第%d個(gè)學(xué)期應(yīng)學(xué)課程:",q); while(C<=MaxScores) {C=C+R[Z+1].grades; if(Z< {CmpOfStr(R[Z].data,name,N);/*讓C1~C12分別與12門(mén)課程對(duì)應(yīng)起來(lái)*/ ++Z;} } printf("\n"); if(q==TotalOfTerms)printf("\nOKOver!"); q++; }四:具體的源代碼本程序分為三部分A:#defineStackofNUM20ata)==0)returni;return-1;}intCreateGraph(ALGraph&G)/*采用鄰接表存儲(chǔ)結(jié)構(gòu)*/{inti,j,h;VertexTypeva;ArcNode*p;printf("請(qǐng)輸入教學(xué)計(jì)劃的課程數(shù):");scanf("%d",&; getchar();printf("請(qǐng)輸入各個(gè)課程的先修課程的總和(弧總數(shù)):");scanf("%d",&; getchar();printf("請(qǐng)輸入%d個(gè)課程的課程號(hào)(最多%d個(gè)字符,字母+數(shù)字如C10):",,MAXOfNAME);for(i=0;i<;++i){scanf("%s",&[i].data); getchar();[i].first=NULL;}printf("請(qǐng)輸入%d個(gè)課程的學(xué)分值:",;for(i=0;i<;++i){scanf("%d",&[i].grades);getchar();}printf("請(qǐng)輸入下列課程的先修課程(無(wú)先修課程輸入0結(jié)束后也輸入0)\n");for(h=0;h<;++h)ata);scanf("%s",va);getchar();while(va[0]!='0'){i=LocateVex(G,va);irst;irst=p;scanf("%s",va);getchar();}}return1;}voidDisplay(ALGraphG)/*輸出圖G的信息*/{inti;ArcNode*p;printf("有向圖\n");printf("%d個(gè)頂點(diǎn)",;for(i=0;i<;++i)printf("%4s",[i].data);printf("\n%d條弧邊:\n",;for(i=0;i<;i++){p=[i].first;while(p) {printf("%s---->%s\n",[i].data,[p->AdjOfV].data);p=p->next;}}}voidFindInDegree(ALGraphG,intindegree[])/*求頂點(diǎn)的入度*/{inti;ArcNode*p;for(i=0;i<;i++)indegree[i]=0;for(i=0;i<;i++){p=[i].first;while(p){indegree[p->AdjOfV]++;p=p->next;}}}structName{charc[20];}name;voidCmpOfStr(VertexTypestr,structNamename[],intn)/*讓C1~C12分別與12門(mén)課程對(duì)應(yīng)起來(lái)*/{if(strcmp(str,name[0].c)==0)printf("程序設(shè)計(jì)基礎(chǔ)");if(strcmp(str,name[1].c)==0)printf("離散數(shù)學(xué)");if(strcmp(str,name[2].c)==0)printf("數(shù)據(jù)結(jié)構(gòu)");if(strcmp(str,name[3].c)==0)printf("匯編語(yǔ)言");if(strcmp(str,name[4].c)==0)printf("語(yǔ)言的設(shè)計(jì)和分析");if(strcmp(str,name[5].c)==0)printf("計(jì)算機(jī)原理");if(strcmp(str,name[6].c)==0)printf("編譯原理");if(strcmp(str,name[7].c)==0)printf("操作系統(tǒng)");if(strcmp(str,name[8].c)==0)printf("高等數(shù)學(xué)");if(strcmp(str,name[9].c)==0)printf("線性代數(shù)");if(strcmp(str,name[10].c)==0)printf("普通物理");if(strcmp(str,name[11].c)==0)printf("數(shù)值分析");C::::::::::::::::::教學(xué)計(jì)劃編制問(wèn)題.Cpp#include<>#include<>#include<>#include<>#include""#include""#defineN12intTopologicalOrder(ALGraphG,AdjListR,structNamename[]){ inti,k,j=0,count,indegree[MAX_VER]; SqStackS; ArcNode*p; FindInDegree(G,indegree);ata,[i].grades); R[j++]=[i];irst;p;p=p->next)rades; printf("\n第%d個(gè)學(xué)期應(yīng)學(xué)課程:",q); while(C<=MaxScores) { C=C+R[Z+1].grades; if(Z< { CmpOfStr(R[Z].data,name,N);/*讓C1~C12分別與12門(mén)課程對(duì)應(yīng)起來(lái)*/ ++Z; } } printf("\n"); if(q==TotalOfTerms)printf("\nOKOver!"); q++; } return1;/**/}voidmain(){ ALGraphG; AdjListR; structNamenam
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 15《搭船的鳥(niǎo)》說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)上冊(cè)
- 2023八年級(jí)數(shù)學(xué)上冊(cè) 第三章 位置與坐標(biāo)2 平面直角坐標(biāo)系第3課時(shí) 建立適當(dāng)?shù)钠矫嬷苯亲鴺?biāo)系求點(diǎn)的坐標(biāo)說(shuō)課稿 (新版)北師大版
- 15堅(jiān)持才會(huì)有收獲(說(shuō)課稿)-部編版道德與法治二年級(jí)下冊(cè)
- 2023七年級(jí)道德與法治上冊(cè) 第二單元 友誼的天空 第五課 交友的智慧 第2框 網(wǎng)上交友新時(shí)空說(shuō)課稿 新人教版
- 1假期有收獲 說(shuō)課稿-2023-2024學(xué)年道德與法治二年級(jí)上冊(cè) 統(tǒng)編版
- 2025外墻紙皮磚合同
- 6的乘法口訣(說(shuō)課稿)-2024-2025學(xué)年人教版數(shù)學(xué)二年級(jí)上冊(cè)
- Unit 3 Fascinating Parks Discover useful structures 說(shuō)課稿-2024-2025學(xué)年高中英語(yǔ)人教版(2019)選擇性必修第一冊(cè)
- 2025委托資產(chǎn)管理合同
- 2024年五年級(jí)語(yǔ)文下冊(cè) 第二單元 8 紅樓春趣說(shuō)課稿 新人教版
- 2024年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2025年山東魯商集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 大型活動(dòng)中的風(fēng)險(xiǎn)管理與安全保障
- 課題申報(bào)書(shū):個(gè)體衰老差異視角下社區(qū)交往空間特征識(shí)別與優(yōu)化
- 江蘇省招標(biāo)中心有限公司招聘筆試沖刺題2025
- 綜采工作面過(guò)空巷安全技術(shù)措施
- 云南省麗江市2025屆高三上學(xué)期復(fù)習(xí)統(tǒng)一檢測(cè)試題 物理 含解析
- 建材材料合作合同范例
- 2025年集體經(jīng)濟(jì)發(fā)展計(jì)劃
- 雙方共同買(mǎi)車(chē)合同范例
- 醫(yī)務(wù)從業(yè)人員行為規(guī)范培訓(xùn)
評(píng)論
0/150
提交評(píng)論