版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告数据结构课程设计报告设计题目:迷宫 年 级 计科09级 班 级 092 ,093 姓 名 学 号 指导教师 起止时间 2011.12.9 2011 年 第2 学期 五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("请输入迷宫的行数 m="); scanf("%d",&m); p
4、rintf("请输入迷宫的列数 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请输入迷宫的各行各列(注意:最后一个数需要是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找到的点%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("找到的节点有%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;六测试分析(运行结果)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度哈尔滨丁香人才周(秋季)香坊区事业单位引才招聘报名工作通知备考题库及参考答案详解一套
- 2026年宜宾市蜀南竹海旅游发展有限公司招聘7名工作人员备考题库及答案详解(易错题)
- 2026年芒市国富备考题库科技有限公司招聘备考题库参考答案详解
- 2026年湖北省医学会招聘备考题库完整参考答案详解
- 2026年贵阳市矿产能源投资集团有限公司公开招聘工作人员备考题库(第三批)及完整答案详解
- 南充市营山县2025年下半年公开考核招聘事业单位工作人员备考题库完整答案详解
- 2025年区块链数字版权保护技术标准分析报告
- 2025年智慧城市行业十年发展:智能交通与智慧医疗报告
- 初中英语写作中情感表达与共鸣建立策略课题报告教学研究课题报告
- 小学英语绘本教学中童谣节奏融入与语音流利度发展的对比实验教学研究课题报告
- 支气管哮喘个案护理
- 《论语》导读(复旦版)学习通超星期末考试答案章节答案2024年
- 中小学智慧教育平台应用
- DL∕T 5097-2014 火力发电厂贮灰场岩土工程勘测技术规程
- 电子版个人劳务合同范本
- 兼职医生劳务协议
- 达托霉素完整版本
- 科研方法论智慧树知到期末考试答案章节答案2024年南开大学
- JTG-H30-2015公路养护安全作业规程
- 拒绝脏话文明用语(课件)-小学生主题班会
- 中医热敏灸疗法课件
评论
0/150
提交评论