教學(xué)計(jì)劃編制問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁
教學(xué)計(jì)劃編制問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁
教學(xué)計(jì)劃編制問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁
教學(xué)計(jì)劃編制問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁
教學(xué)計(jì)劃編制問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)信息科學(xué)與工程學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)課程設(shè)名

教學(xué)計(jì)編問題-1-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)前

言是一門綜合程序設(shè)計(jì)理論和主,涉,所包程,還是對(duì),,大家就更深入透徹地理解數(shù)據(jù)結(jié)構(gòu)的,,力,提,為大C學(xué)通過將C語言應(yīng)用到實(shí)際當(dāng)中且可以更好的掌握算法與數(shù)和C使關(guān)字C語言-2-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)目

錄前

言244466777810測(cè)調(diào)試過程15目-3-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)一課內(nèi)與求1.1課題內(nèi)[問]

課程設(shè)計(jì)假設(shè)任何專業(yè)都有固定[基1號(hào)占3位的字母數(shù)字串)23)若根據(jù)給定的條件1.2設(shè)要1照需求分-4-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)2

課程設(shè)計(jì)a、子程序b、3用C語(d、遇到問題應(yīng)及時(shí)作出5)后續(xù)工作a、及時(shí)的總結(jié)設(shè)計(jì)中遇到的問題及解決的辦法。寫下-5-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)二需分據(jù)教學(xué)計(jì)劃中的課程及其關(guān)系和學(xué)分定義圖的(AOV單(序課程排序后并決定出每學(xué)期所圖大的信息Display(將圖三課實(shí)模設(shè)3.1程序模設(shè)LocateVex():reateGraph():isplay():FindInDegree():InitStack():StackEmpty():

圖的鄰接表存儲(chǔ)的基本操作構(gòu)造生成樹輸出圖的鄰接矩陣求頂點(diǎn)的入度構(gòu)造一個(gè)空棧判斷是否為空棧-6-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)Pop():Push():ClearStack():Judge():

出棧入棧清空棧判斷課程號(hào)對(duì)應(yīng)的課程序號(hào)TopologicalSort():輸出G頂點(diǎn)的拓?fù)渑判蚪Y(jié)果Output():

圖形輸出函數(shù)3.2函的用系Void()OutputCreatGraph(DisplayTopologicalSort四模的能現(xiàn)4.1相關(guān)數(shù)類的義a語言定義相關(guān)的數(shù)據(jù)類型。其中包括定b存的數(shù)據(jù)為結(jié)構(gòu)體類型數(shù)組:typedefstructstruct。-7-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)4.2主函的程eginreateGraph()

課程設(shè)計(jì)Printf(請(qǐng)入教學(xué)計(jì)劃的課程數(shù)”Scanf(”Printf(先關(guān)系的邊數(shù))Scanf(”,&(G).arcnum)Printf(輸入%課.,(*G.vexnum,MAX_NAME)i++i<(*G).vexnum“%s”(*G).vertices[i].firstarc=nulli++-8-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)Printf(“入每條.”Scanf(%s%s,...)=LocateVex(*G,va)=LocateVex(*G,vb)P=(ArcNode*)malloc(size...)p-->adjvex=jP-->info=null0-9-信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)五程調(diào)5.1測(cè)試數(shù):::10;:12從C01C12:,3,4,3,,,4,4,7,5,2,3

5

12310611

(中析)5.2調(diào)試過輸入課程的課程-10信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)-11信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)-12信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)六程設(shè)總

課程設(shè)計(jì)的CC語言并將我們當(dāng)初最關(guān)每門雖然學(xué)過卻沒通過在網(wǎng)上編寫了一個(gè)拓?fù)渑?13信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)能重翻書本再次學(xué)習(xí),而這浪費(fèi)了編程肯定定會(huì)-14信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)七附7.1致謝致謝首先感謝我們的指導(dǎo)老師周鐵老師在我們的課程設(shè)計(jì)過程中提出了指導(dǎo)性的方案和架構(gòu)指引我們閱讀相關(guān)的資料和書籍使我們?cè)诓皇煜さ念I(lǐng)域中仍能迅速掌握新的技術(shù)在此感謝他為我們打下良好的基礎(chǔ)是我們這次課程設(shè)計(jì)能夠順利完成的前提。另外,劉思在此次課程設(shè)計(jì)中認(rèn)真完成的需求分析,朱敏負(fù)責(zé)的代碼海燕在設(shè)計(jì)完成后對(duì)程序的測(cè)試是不可多得的,在此一并表示感謝。7.2參書《數(shù)據(jù)結(jié)構(gòu)(C語言版)》《數(shù)據(jù)結(jié)構(gòu)題集(C語言版)》3.《C語言程序設(shè)計(jì)(第三版)》7.3源序單

嚴(yán)蔚敏等編著嚴(yán)蔚敏等編著譚浩強(qiáng)編著/*輸出有向圖的一個(gè)拓?fù)湫蛄屑捌鋺?yīng)用問題的算法實(shí)現(xiàn)程序*/#include<string.h>#include<ctype.h>#include<malloc.h>#include<limits.h>#include<stdio.h>#include<stdlib.h>#include<io.h>#include<math.h>#include<process.h>#include<iostream.h>/*函數(shù)結(jié)果狀態(tài)代碼宏定義/#defineTRUE1-15信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1typedefintStatus;typedefintBoolean;#defineMAX_NAME10#defineMAXCLASS100/*頂點(diǎn)字符串的最大長度*/#defineMAX_VERTEX_NUM100intZ=0;intX=0;intxlz1,q=1,xlz2;/*xlz1學(xué)期總數(shù)xlz2為學(xué)分上限*/typedefintInfoType;typedefcharVertexType[MAX_NAME];/*字符串類型*/typedefenum{DG}GraphKind;/*{有向圖,有向網(wǎng)無向圖,無向網(wǎng)}*//*圖的鄰接表存儲(chǔ)表示*/typedefstructArcNode{intadjvex;/*structArcNode*nextarc;/*InfoType*info;/*}ArcNode;/*typedefstruct{

該弧所指向的頂點(diǎn)的位置*/指向下一條弧的指針*/網(wǎng)的權(quán)值指針*/表結(jié)點(diǎn)*/VertexTypedata;/*頂點(diǎn)信息*/ArcNode*firstarc;/*第一個(gè)表結(jié)點(diǎn)的地址指向第一條依附該頂點(diǎn)的弧的指針*/}VNode,AdjList[MAX_VERTEX_NUM];/*頭結(jié)點(diǎn)*/typedefstruct{AdjListvertices,verticestwo;/*vertices存儲(chǔ)課程名*/intvexnum,arcnum;/*圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù)*/intkind;/*圖的種類標(biāo)志*/}ALGraph;/*圖的鄰接表存儲(chǔ)的基本操作*/intLocateVex(ALGraphG,VertexTypeu){/*初始條件:圖G存在,u和G中頂點(diǎn)有相同特征*/inti;for(i=0;i<G.vexnum;++i)if(strcmp(u,G.vertices[i].data)==0)-16信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)returni;return-1;

課程設(shè)計(jì)}/*采用鄰接表存儲(chǔ)結(jié)構(gòu),構(gòu)造設(shè)有相關(guān)信息的圖G*/StatusCreateGraph(ALGraph*G){inti,j,k;VertexTypeva,vb;ArcNode*p;printf("請(qǐng)輸入教學(xué)計(jì)劃的課程數(shù)");scanf("%d",&(*G).vexnum);printf("\n");printf("請(qǐng)輸入拓?fù)渑判蛩纬傻恼n程先修關(guān)系的邊數(shù)");scanf("%d",&(*G).arcnum);printf("\n");printf("請(qǐng)輸入個(gè)課課程號(hào)(字母+數(shù)字且于%d個(gè)字符):\n",(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexnum;++i)/*構(gòu)造頂點(diǎn)向量*/{scanf("%s",(*G).vertices[i].data);(*G).vertices[i].firstarc=NULL;}printf("\n");printf("請(qǐng)輸個(gè)課的分值字)空格隔開:\n",(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexnum;++i)/*構(gòu)造頂點(diǎn)向量*/{scanf("%s",(*G).verticestwo[i].data);}printf("\n");printf("請(qǐng)順序輸入每條弧邊)的弧尾和弧頭(以空格作為間隔:\n");for(k=0;k<(*G).arcnum;++k)/*構(gòu)造表結(jié)點(diǎn)鏈表*/{scanf("%s%s",va,vb);=LocateVex(*G,va);/*弧尾*/=LocateVex(*G,vb);/*弧頭*/p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;p->info=NULL;/*圖*/p->nextarc=(*G).vertices[i].firstarc;/*插在表頭*/(*G).vertices[i].firstarc=p;}printf("\n");returnOK;-17信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)}/*輸出圖的鄰接矩陣G*/voidDisplay(ALGraphG){inti;ArcNode*p;switch(G.kind){caseDG:printf("有向圖\n");}printf("%d個(gè)頂點(diǎn):\n",G.vexnum);for(i=0;i<G.vexnum;++i)printf("%s",G.vertices[i].data);printf("\n");printf("\n%d條弧(邊):\n",G.arcnum);for(i=0;i<G.vexnum;i++){p=G.vertices[i].firstarc;while(p){printf("%s→%s",G.vertices[i].data,G.vertices[p->adjvex].data);p=p->nextarc;}printf("\n");}}/*求頂點(diǎn)的入度*/voidFindInDegree(ALGraphG,intindegree[]){inti;ArcNode*p;for(i=0;i<G.vexnum;i++)indegree[i]=0;for(i=0;i<G.vexnum;i++){p=G.vertices[i].firstarc;while(p){indegree[p->adjvex]++;p=p->nextarc;}}}-18信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)/*棧的順序存儲(chǔ)表示*/typedefintSElemType;/*棧類型*/#defineSTACK_INIT_SIZE10/*存儲(chǔ)空間初始分配量*/#defineSTACKINCREMENT2/*存儲(chǔ)空間分配增量*/typedefstructSqStack{SElemType*base;/*在棧構(gòu)造之前和銷毀之后base的值為NULL*/SElemType*top;/*棧頂指針*/intstacksize;/*當(dāng)前已分配的存儲(chǔ)空間以元素為單位*/}SqStack;/*順序棧*//*順序棧的基本操作函數(shù),構(gòu)造一個(gè)空棧S*/StatusInitStack(SqStack*S){(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!(*S).base)exit(OVERFLOW);/*存儲(chǔ)分配失敗*/(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;returnOK;}/*判棧空:若棧S為空棧,則返回TRUE,否則返回FALSE*/StatusStackEmpty(SqStackS){if(S.top==S.base)returnTRUE;elsereturnFALSE;}/*出棧操作:若棧不空,則刪除S的棧頂元素,e返回其值,并返回OK;否則返回ERROR*/StatusPop(SqStack*S,SElemType*e){if((*S).top==(*S).base)returnERROR;*e=*--(*S).top;returnOK;}/*入棧操作:插入元素e為新的棧頂元素*/StatusPush(SqStack*S,SElemTypee){-19信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)if((*S).top-(*S).base>=(*S).stacksize)/*棧滿加存儲(chǔ)空間*/{(*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));if(!(*S).base)exit(OVERFLOW);/*存儲(chǔ)分配失敗*/(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=STACKINCREMENT;}*((*S).top)++=e;returnOK;}/*清空棧的操作*/voidClearStack(SqStack*S){S->top=S->base;}/*判斷課程編號(hào)對(duì)應(yīng)型號(hào)數(shù)*/intJudge(charstr[]){if(strcmp("C1",str)==0||strcmp("c1",str)==0)return1;if(strcmp("C2",str)==0||strcmp("c2",str)==0)return2;if(strcmp("C3",str)==0||strcmp("c3",str)==0)return3;if(strcmp("C4",str)==0||strcmp("c4",str)==0)return4;if(strcmp("C5",str)==0||strcmp("c5",str)==0)return5;if(strcmp("C6",str)==0||strcmp("c6",str)==0)return6;if(strcmp("C7",str)==0||strcmp("c7",str)==0)return7;if(strcmp("C8",str)==0||strcmp("c8",str)==0)return8;if(strcmp("C9",str)==0||strcmp("c9",str)==0)return9;if(strcmp("C10",str)==0||strcmp("c10",str)==0)-20信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)return10;

課程設(shè)計(jì)if(strcmp("C11",str)==0||strcmp("c11",str)==0)return11;if(strcmp("C12",str)==0||strcmp("c12",str)==0)return12;return0;}typedefintpathone[MAXCLASS];typedefintpathtwo[MAXCLASS];/*有向圖G采用鄰接表存儲(chǔ)結(jié)構(gòu)G回路,則輸出G的頂點(diǎn)的一個(gè)拓?fù)湫蛄胁⒎祷豋K,否則返回ERROR*/StatusTopologicalSort(ALGraphG){inti,k,j=0,count,indegree[MAX_VERTEX_NUM];boolhas=false;SqStackS;pathonea;pathtwob;ArcNode*p;FindInDegree(G,indegree);/*對(duì)各頂點(diǎn)求入度*/InitStack(&S);/*初始化棧*/for(i=0;i<G.vexnum;++i)/*建零入度頂點(diǎn)棧S,入讀為零者入棧/if(!indegree[i]){Push(&S,i);}count=0;/*對(duì)輸出頂點(diǎn)計(jì)數(shù)*/while(!StackEmpty(S)){Pop(&S,&i);[i]=*G.vertices[i].data;[i]=*G.verticestwo[i].data;switch(Judge(G.vertices[i].data)){case1:printf("課程:%s→","程序設(shè)計(jì)基礎(chǔ)");break;case2:printf("課程:%s→","離散數(shù)學(xué)");break;case3:printf("課程:%s→","數(shù)據(jù)結(jié)構(gòu)");break;case4:printf("課程:%s→","匯編語言");break;case5:printf("課程:%s→","語言的設(shè)計(jì)和分析");break;case6:printf("課程:%s→","計(jì)算機(jī)原理");break;case7:printf("課程:%s→","編譯原理");break;case8:printf("課程:%s→","操作系統(tǒng)");break;case9:printf("課程:%s→","高等數(shù)學(xué)");break;case10:printf("課程:%s→","線性代數(shù)");break;-21信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì)case11:printf("課程:%s→","普通物理");break;case12:printf("課程:%s→","數(shù)值分析");break;}printf("學(xué)分%s\n",G.verticestwo[i].data);++count;/*輸出i號(hào)頂點(diǎn)并計(jì)數(shù)*/for(p=G.vertices[i].firstarc;p;p=p->nextarc){k=p->adjvex;if(!(--indegree[k]))/*若入度減為0,則入棧*/{Push(&S,k);}}}if(count<G.vexnum){printf("此有向圖有回路。\n\n\n");returnERROR;}else{printf("為一個(gè)拓?fù)湫蛄小n\n\n");has=true;}FindInDegree(G,indegree);/*對(duì)各頂點(diǎn)求入度*/ClearStack(&S);printf("****************程計(jì)劃如下*****************\n\n");intqq=1;intxxf;while(qq<=xlz1){intresult[20];intrtop=0;intnn=0;xxf=0;for(i=0;i<G.vexnum;++i)/*建零入度頂點(diǎn)棧S*/{if(0==indegree[i]){Push(&S,i);}}while(!StackEmpty(S))-22信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)

課程設(shè)計(jì){intbb;Pop(&S,&i);bb=atoi(G.verticestwo[i].data);xxf=xxf+bb;if(xxf>xlz2){break;}indegree[i]--;for(p=G.vertices[i].firstarc;p;p=p->nextarc){k=p->adjvex;indegree[k]--;}result[rtop]=i;rtop++;}printf("第%d個(gè)學(xué)期的課程為:",qq);for(nn=0;nn<rtop;nn++){switch(Judge(G.vertices[result[nn]].data)){case1:printf("%s","程序設(shè)計(jì)基礎(chǔ)");break;case2:printf("%s","離散數(shù)學(xué)");break;case3:printf("%s","數(shù)據(jù)結(jié)構(gòu)");break;case4:printf("%s","匯編語言");break;case5:printf("%s","語言的設(shè)計(jì)和分析");break;case6:printf("%s","計(jì)算機(jī)原理");break;case7:printf("%s","編譯原理");break;case8:printf("%s","操作系統(tǒng)");break;case9:printf("%s","高等數(shù)學(xué)");break;case10:printf("%s","線性代數(shù)");break;case11:printf("%s","普通物理");break;case12:printf("%s","數(shù)值分析");break;}}printf("\n");qq++;}printf("\n");printf("教學(xué)計(jì)劃編制完成!!\n\n\n");returnOK;}-23信息科學(xué)工程學(xué)院《高級(jí)語言程序設(shè)計(jì)/*圖形輸出函數(shù)*/voidOutput(){

課程設(shè)計(jì)printf("**************據(jù)

溫馨提示

  • 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)論