版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:迷宮 年 級 計(jì)科09級 班 級 092 ,093 姓 名 學(xué) 號 指導(dǎo)教師 起止時(shí)間 2011.12.9 2011 年 第2 學(xué)期 五C語言源代碼#include<malloc.h>#include<stdlib.h>#include<stdio.h>int m,n;int *maze = NULL;struct Element int i;int j;int di;typedef struct LinkStack struct Element element;struct LinkStack * next;str
2、uct LinkStack * prior;LinkStack;LinkStack *top = NULL;LinkStack *head = NULL;int count=0; int mgpath(int xi,int yi,int xe,int ye);void printMaze(int * maze)int i,j;printf("您的迷宮圖如下所示:n"); for(i=0; i<m+2; i+)for(j=0; j<n+2; j+)printf("%4d",mazeij);printf("n");printf
3、("n*n");void addWall(int * maze)int i,j;for(i=0; i<m+2; i+) for(j=0; j<n+2; j+) if(i=0)mazeij = 1;if(i>0 && i<(m+2-1) mazei0=1;mazein+2-1=1;break;if(i=m+2-1) mazeij=1; int * initMaze() int i,j;int flag = 0;printf("請輸入迷宮的行數(shù) m="); scanf("%d",&m); p
4、rintf("請輸入迷宮的列數(shù) n="); scanf("%d",&n); maze = (int *)malloc(sizeof(int *) * (m+2); printf("n*n");for(i=0; i<n+2; i+) *(maze+i) = (int *)malloc(sizeof(int)*(n+2); addWall(maze);/給迷宮加墻 printf("n請輸入迷宮的各行各列(注意:最后一個(gè)數(shù)需要是0):n用空格隔開,0代表路,1代表墻nn");for(i=1;i<=m;
5、i+) for(j=1;j<=n;j+) scanf("%d",&mazeij); printf("n*n");printMaze(maze); return maze;void mazePath() if(top = head && head != NULL) return;while(top != head |head = NULL)int k = 0;int find = 0;int i = 0,j=0;int di = -1;if(top != NULL)di=top->element.di; LinkStac
6、k *node= (LinkStack *) malloc(sizeof(LinkStack); node->element.di = di;if(top = NULL)head = (LinkStack *) malloc(sizeof(LinkStack);head->element.i = 1;head->element.j = 0;head->element.di = 1;head->prior = NULL;top = head;node->element.i = 1;node->element.j = 1;node->element.
7、di = -1;top->next = node;node->next = NULL;node->prior = top; top = node; di = top->element.di;while(di<4 && find = 0) di+;switch(di) case 0:i = top->prior->element.i - 1;j = top->prior->element.j;break;case 1:i = top->prior->element.i;j = top->prior->e
8、lement.j + 1;break;case 2:i = top->prior->element.i + 1;j = top->prior->element.j;break; case 3: i = top->prior->element.i;j = top->prior->element.j - 1;break; if(mazeij = 0)find = 1; if(i = m && j = n) top->element.i = m;top->element.j = n;top->prior->ele
9、ment.di = di;printf("%4d:",+count);LinkStack * n = head->next;while(n != NULL) printf("(%d,%d,%d ) ",n->element.i,n->element.j,n->element.di);printf(" -> ");if(k + 1)%5 = 0) printf("nt");k+;n = n->next;printf("出口");printf("n&qu
10、ot;);mazetop->element.itop->element.j = 0;top = top->prior; free(node);mazePath();elseif(find = 1)top->prior->element.di = di; top->element.i = i;top->element.j = j; top->element.di = -1;mazeij = -1;mazePath();elsemazetop->prior->element.itop->prior->element.j = 0
11、; top = top->prior->prior; free(node);mazePath();int mgpath(int xi,int yi,int xe,int ye)printf("非遞歸通路:n");int i,j;int find;int di;LinkStack *node= (LinkStack *) malloc(sizeof(LinkStack); head = (LinkStack *) malloc(sizeof(LinkStack);head->element.i = 1;head->element.j = 0;head-
12、>element.di = 1;head->prior = NULL;top = head;node->element.i = xi; node->element.j = yi;node->element.di = -1;maze11=1; top->next = node;head->next=node;node->next = NULL;node->prior = top;di=node->element.di;top=node;LinkStack * n = head->next;while(top->prior!=
13、 NULL)find=0;di=top->element.di;while(di<4&&find=0)di+;switch(di)case 0:i=top->element.i-1;j=top->element.j;break;case 1:i=top->element.i;j=top->element.j+1;break;case 2:i=top->element.i+1;j=top->element.j;break;case 3:i=top->element.i,j=top->element.j-1;break;d
14、efault:if(mazeij=0)find=1;top->element.di=di;printf("find找到的點(diǎn)%d,%d,%d",i,j);if(find=1)if(i=xe&&j=ye&&mazeij=0) LinkStack *node1= (LinkStack *) malloc(sizeof(LinkStack); top->element.di=di;node1->element.i=i;node1->element.j=j;node1->element.di=-1;top->next
15、=node1;node1->next=NULL;node1->prior=top;top=node1;mazeij=1;printf(" ");while(n!=NULL)printf("(%d,%d,%d)",n->element.i,n->element.j,n->element.di);printf(" -> ");n=n->next;printf("出口");printf("n");return(0);elseLinkStack *node1=
16、(LinkStack *) malloc(sizeof(LinkStack);top->element.di=di;node1->element.i=i;node1->element.j=j;node1->element.di=-1;top->next=node1;node1->next=NULL;node1->prior=top;top=node1;mazeij=1;printf("找到的節(jié)點(diǎn)有%d,%d,%d",node1->element.i,node1->element.j,node1->element.di);elsemazetop->element.itop->element.j=0;top = top->prior;free(top->next);return(0); int main()int i;initMaze();mazePath();if(count=0)printf("*");printf("n該迷宮沒有通路n");return 0; printf("n*n");mgpath(1,1,m,n);if(head != NULL) free(head);return 0;六測試分析(運(yùn)行結(jié)果)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居間合同2025年度版:定義、屬性與服務(wù)質(zhì)量評估體系3篇
- 二零二五年度能源項(xiàng)目權(quán)益轉(zhuǎn)讓與投資合同3篇
- 二零二五年軟件開發(fā)服務(wù)合同4篇
- 二零二五版智能LED戶外廣告平臺合作項(xiàng)目合同3篇
- 影視器材租賃與技術(shù)服務(wù)2025年度合同3篇
- 二零二五年度房地產(chǎn)開發(fā)項(xiàng)目造價(jià)咨詢合同6篇
- 二零二五版搬家運(yùn)輸合同:搬家運(yùn)輸途中物品丟失賠償3篇
- 二零二五版海鮮加盟店日常運(yùn)營管理與維護(hù)服務(wù)合同范本2篇
- 二零二五年度車輛轉(zhuǎn)讓附帶綠色出行獎(jiǎng)勵(lì)政策合同3篇
- 二零二五年度智能辦公桌椅研發(fā)合作合同2篇
- 一年級語文雨點(diǎn)兒-教學(xué)課件【希沃白板初階培訓(xùn)結(jié)營大作業(yè)】
- 替格瑞洛藥物作用機(jī)制、不良反應(yīng)機(jī)制、與氯吡格雷區(qū)別和合理使用
- 河北省大學(xué)生調(diào)研河北社會調(diào)查活動(dòng)項(xiàng)目申請書
- GB/T 20920-2007電子水平儀
- 如何提高教師的課程領(lǐng)導(dǎo)力
- 企業(yè)人員組織結(jié)構(gòu)圖
- 日本疾病診斷分組(DPC)定額支付方式課件
- 兩段焙燒除砷技術(shù)簡介 - 文字版(1)(2)課件
- 實(shí)習(xí)證明模板免費(fèi)下載【8篇】
- 復(fù)旦大學(xué)用經(jīng)濟(jì)學(xué)智慧解讀中國課件03用大歷史觀看中國社會轉(zhuǎn)型
- 案件受理登記表模版
評論
0/150
提交評論