亚洲一级电影在线观看,九九精品无码专区免费,亚洲AV无码资源在线观看 ,欧美国产高清

迷宮問題課程設計

時間:2024-06-06 23:00:30 電子信息工程畢業論文 我要投稿
  • 相關推薦

迷宮問題課程設計

目 錄 1問題描述………………………………………………………………...1 2需求分析 1 3概要設計 1 3.1抽象數據類型定義 1 3.2子程序及功能要求 1 3.3各程序模塊之間的調用關系 2 4詳細設計 2 4.1設計相應數據結構 2 4.2主要模塊的算法描述 3 5測試分析 9 6課程設計總結 10 參考文獻 10 附錄(源程序清單) 10 1 問題描述 編制程序給出一條通過迷宮的路徑或報告一個“無法通過”的信息。該迷宮是一個M行N列的0-1矩陣,其中0表示無障礙,1表示有障礙。設入口為(1,1)出口為(M,N)每次移動只能從一個無障礙的單元移到其周圍8個方向上任一無障礙的單元, 2 需求分析 該算法的基本思想是: (1) 若當前位置“可通”,則納入路徑,繼續前進; (2)若當前位置“不可通”,則后退,換方向繼續探索; (3)若四周“均無通路”,則將當前位置從路徑中刪除出去。 3 概要設計 3.1 抽象數據類型定義 typedef struct { int x, y; //坐標 int dir; //方向 }ElemType; typedef struct StackNode//構造棧 { ElemType *base; ElemType *top; int stacksize; }SqStack; 3.2 子程序及功能要求 (1)void Input(char b[M][M]); (2)void Ouput(const char b[M][M]); (3)int FindWay(char maze[M][M]); (4)int NextStep(int *x, int *y, int dir). 3.3 各程序模塊之間的調用關系 主函數可調用子程序void Input(char b[M][M]); void Ouput(const char b[M][M]); int FindWay(char maze[M][M]); int NextStep(int *x, int *y, int dir). 4 詳細設計 4.1 設計相應數據結構 (1)迷宮類型定義 typedef struct { int x, y; //坐標 int dir; //方向 }ElemType; typedef struct StackNode//構造棧 { ElemType *base; ElemType *top; int stacksize; }SqStack; (2)棧元素類型定義 int InitStack(SqStack *S) //初始化棧 { S->base=(ElemType*) malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } 4.2 主要模塊的算法描述 #include #include #define M 10 //自己規定為10*10的迷宮 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 int findway(int); int NextStep(int *, int *, int ); typedef struct { int x, y; //坐標 int dir; //方向 }ElemType; typedef struct StackNode//構造棧 { ElemType *base; ElemType *top; int stacksize; }SqStack; int InitStack(SqStack *S) //初始化棧 { S->base=(ElemType*) malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } int Push(SqStack *S,ElemType e) //進棧操作 { if(S->top-S->base>=S->stacksize) { S->base=(ElemType*) realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(Eleme)); if (!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top = S->base+S->stacksize; S->stacksize += STACKINCREMENT; } *S->top++=e; return OK; } int Pop(SqStack *S,ElemType *e) //出棧操作 { if(S->top==S->base) { return ERROR; } *e=*--S->top; printf("%d\n",e); return OK; } int StackEmpty(SqStack *S) //判斷棧是否為空 { if(S->top==S->base) return OK; else return ERROR; } void Input(char b[M][M]) //輸入時候請注意把一圈都輸入為墻即'#' { int i, j; printf("qingshuirumigongxingzhuang:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { scanf("%c",&b[i][j]); } getchar();//吃掉內存中的殘留換行符號 } } void Ouput(const char b[M][M]) { int i, j; printf("migongxingzhuangwei:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { printf("%c",b[i][j]); } printf("\n"); } } int FindWay(char maze[M][M]) { ElemType e; int constep = 1; int x = 1, y = 1; SqStack S; InitStack(&S); do { if (maze[x][y] == ' ') //當第3次時 maze[x][y]!=' ' 照樣通不過 { maze[x][y] = '1'; e.x = x; e.y = y; e.dir = 1; Push(&S,e); if (x == M-2 && y == M-2) { printf("cunzaichukou\n"); return 1; } NextStep(&x,&y,1); constep++; } else { Pop(&S,&e); while (e.dir == 4 && !StackEmpty(&S)) { maze[e.x][e.y] = '0'; Pop(&S,&e); } { if (e.dir < 4) { e.dir++; Push(&S,e); x = e.x; y = e.y; NextStep(&x, &y, e.dir); } else { printf("meiyouchukou\n"); return 0; } } } }while(S.top!=S.base); return 0; } int NextStep(int *x, int *y, int dir) { switch(dir) { case 1: (*y)++; break; case 2: (*x)++; break; case 3: (*y)--; break; case 4: (*x)--; break; default: break; } return 0; } int main(void) { char a[M][M]; Input(a); Ouput(a); FindWay(a); Ouput(a); system("pause"); return 0; } 5 測試分析 6 課程設計總結 該次程序設計我作為組長,我先寫了任務書,再把模板及其要求告訴了組員,再跟他們一起編寫程序、查找資料來修改程序,再一起測試分析,最后以總結結束 通過這次課程設計,我深刻的體會到了數據結構的重要性。學數據結構不只是為了考試,更重要的是它對我們以后也會有很大的幫助,尤其是我們這個注專業。在整個課程設計過程中,我遇到了許多困難,不管是編程序改還是調試等都存在很多問題。一遇到問題我就查看各種資料來解決,但還是又很多不明白的地方,特別是運行的時候我還問了同學。由此我意識到自己有許多要學的,學的也不夠認真不夠透徹。 參考文獻: [1] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,2002 [2] 劉振鵬,張曉莉,郝杰.數據結構[M].北京:中國鐵道出版社,2003 [3] 李春葆.數據結構習題與解析(C語言篇)[M].北京:清華大學出版社,2000 附錄(源程序清單) #include #include #define M 10 //自己規定為10*10的迷宮 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 int findway(int); int NextStep(int *, int *, int ); typedef struct { int x, y; //坐標 int dir; //方向 }ElemType; typedef struct StackNode//構造棧 { ElemType *base; ElemType *top; int stacksize; }SqStack; int InitStack(SqStack *S) //初始化棧 { S->base=(ElemType*) malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } int Push(SqStack *S,ElemType e) //進棧操作 { if(S->top-S->base>=S->stacksize) { S->base=(ElemType*) realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(Eleme)); if (!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top = S->base+S->stacksize; S->stacksize += STACKINCREMENT; } *S->top++=e; return OK; } int Pop(SqStack *S,ElemType *e) //出棧操作 { if(S->top==S->base) { return ERROR; } *e=*--S->top; printf("%d\n",e); return OK; } int StackEmpty(SqStack *S) //判斷棧是否為空 { if(S->top==S->base) return OK; else return ERROR; } void Input(char b[M][M]) //輸入時候請注意把一圈都輸入為墻即'#' { int i, j; printf("qingshuirumigongxingzhuang:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { scanf("%c",&b[i][j]); } getchar();//吃掉內存中的殘留換行符號 } } void Ouput(const char b[M][M]) { int i, j; printf("migongxingzhuangwei:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { printf("%c",b[i][j]); } printf("\n"); } } int FindWay(char maze[M][M]) { ElemType e; int constep = 1; int x = 1, y = 1; SqStack S; InitStack(&S); do { if (maze[x][y] == ' ') //當第3次時 maze[x][y]!=' ' 照樣通不過 { maze[x][y] = '1'; e.x = x; e.y = y; e.dir = 1; Push(&S,e); if (x == M-2 && y == M-2) { printf("cunzaichukou\n"); return 1; } NextStep(&x,&y,1); constep++; } else { Pop(&S,&e); while (e.dir == 4 && !StackEmpty(&S)) { maze[e.x][e.y] = '0'; Pop(&S,&e); } { if (e.dir < 4) { e.dir++; Push(&S,e); x = e.x; y = e.y; NextStep(&x, &y, e.dir); } else { printf("meiyouchukou\n"); return 0; } } } }while(S.top!=S.base); return 0; } int NextStep(int *x, int *y, int dir) { switch(dir) { case 1: (*y)++; break; case 2: (*x)++; break; case 3: (*y)--; break; case 4: (*x)--; break; default: break; } return 0; } int main(void) { char a[M][M]; Input(a); Ouput(a); FindWay(a); Ouput(a); system("pause"); return 0; }

【迷宮問題課程設計】相關文章:

課程設計論文致謝詞參考11-24

課程設計畢業論文致謝詞11-29

基于TQM理論的MBA課程設計研究03-01

“語法化”問題03-27

關于客體與主體的關系問題才是哲學的基本問題03-01

有效課堂的靜態網頁設計課程設計論文05-01

論文答辯問題01-17

畢業答辯典型問題11-19

漢語短語的分類問題03-18

主站蜘蛛池模板: 午夜福利青春青草久久| 国产成人+亚洲欧洲+综合| 在线精品国产成人综合| 国产在线国偷精品免费看| 思思热在线视频精品| 国产一级毛片高清完整视频版| 一级高清毛片免费a级高清毛片| 亚洲精品视频网| 亚洲成人精品在线| 国内精品久久久久久影院| 亚洲成人在线免费观看| 亚洲成人网在线播放| 亚洲婷婷六月| 无码中文字幕日韩专区视频| 久久综合亚洲色hezyo社区| 国产男女猛烈无遮挡免费视频| 久久久久亚洲精品天堂| 国产在线无码视频一区二区三区 | 2021国产精品自拍| 国产日韩一区二区三区免费高清| 精品亚洲国产成人a片app| 八个少妇沟厕小便漂亮各种大屁股| 国产在线线精品宅男网址| 欧美人与动牲交zooz3d| 国产精品成人久久电影| 久久人人爽人人爽人人爽| 午夜亚洲精品久久一区二区| 尤物网址在线观看| 国产精品992tv在线观看| 亚洲国产日韩a在线亚洲| 秋霞鲁丝片av无码| 亚洲最大成人网色| 色综合天天综合网国产| 国产肥白大熟妇bbbb| 精品久久久久久国产牛牛| 亚洲中文字幕无码一区| 精品国偷自产在线电影| 仁怀市| 自治县| 国产亚洲美日韩AV中文字幕无码成 | 少妇精品久久久一区二区三区|