1、初始条件:已初始化栈S,且栈为空操作结果:从栈中找出相对应的数据关系,并输出结果ADT Find2. 主程序的流程以及各程序模块之间的调用关系:(1).定义变量i、j、w、z为整形变量(2).输入迷宫二维数组maze(0:m,0:n)(3).调用子程序find ()(4).结束程序三、相应的源程序如下:#includestdio. (void) SqStack S;int size,maze1212; for(int n=0;n10;n+) printf(创建一个正方形迷宫,请输入迷宫尺寸(注意不要大于50):n); scanf(%d,&size);if(size10)printf(输入错误!
2、return; Initmaze(maze,size); printmaze(maze,size); PosType start,end;输入入口行坐标和列坐标:scanf(start.row);start.line);输入出口行坐标和列坐标:end.row);end.line); if(MazePath(maze,S,start,end) printpath(maze,S,size); else printf(找不到通路!nnStatus MazePath(int maze1212,SqStack &S, PosType start, PosType end) PosType curpos;
3、int curstep;SElemType e;InitStack(S);curpos = start;curstep = 1;do if (Pass(maze,curpos) Markfoot(maze,curpos); e.di =1; e.ord = curstep; e.seat= curpos; Push(S,e); if (curpos.row=end.row & curpos.line=end.line) return OK; curpos = NextPos(curpos, 1); curstep+; else if (!StackEmpty(S) Pop(S,e); whil
4、e (e.di=4 & ! Markfoot(maze,e.seat); if (e.di4) e.di+; Push(S, e); curpos = NextPos(e.seat, e.di); while (!StackEmpty(S);return ERROR; void Initmaze(int maze1212,int size) char select;printf(选择创建方式 A:自动生成 B:手动创建n label:%cselect); if(select=a|select=A) for(int i=0;isize+2;i+)maze0i=1; for( i=1;size+1
5、;i+) mazei0=1; for(int j=1;jseat.rowp-seat.line=2; p+; if(mazeij=2) printf(0 Status Pass(int maze1212,PosType CurPos)if (mazeCurPos.rowCurPos.line=0)else return ERROR;void Markfoot(int maze1212,PosType CurPos)mazeCurPos.rowCurPos.line=1;PosType NextPos(PosType CurPos, int Dir) PosType ReturnPos;swit
6、ch (Dir) case 1: ReturnPos.row=CurPos.row; ReturnPos.line=CurPos.line+1; break; case 2: ReturnPos.row=CurPos.row+1; ReturnPos.line=CurPos.line; case 3: ReturnPos.line=CurPos.line-1; case 4: ReturnPos.row=CurPos.row-1;return ReturnPos;Status InitStack(SqStack &S.base=(SElemType *)malloc(100*sizeof(SE
7、lemType);if(!S.base)return ERROR;S.top=S.base;S.stacksize=100;return OK;Status Push(SqStack &S,SElemType &a) *S.top+=a;Status Pop(SqStack &if(S.top=S.base)return ERROR;a=*-S.top;Status StackEmpty(SqStack S)if(S.top=S.base)return OK;以下为测试数据:输入一个矩阵,例如:1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0
8、输入入口行坐标和列坐标:1 2输入出口行坐标和列坐标:5 5通路路径为:课题设计3:joseph环利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。首先创建一个空链表,初始化链表,构造出一个只有头结点的空链表,建立好一个约瑟夫环。1. 输入的形式和输入值的范围本程序中,输入报数上限值m和人数上限l,密码,均限定为正整数,输入的形式为一个以“回车符”为结束标志的正整数。2. 输出的形式从屏幕显示出列顺序。3. 程序功能提供用户从键盘输入,Joseph约瑟夫环的必要数据,并显示出列顺序。二、 概要设计以单向循环链表实现该结构。1. 抽象数据类型的定义为:ADT LNodeD=ai | aiCharSet,i= 1,2,n,n0R1=< ai-1 ,ai > | ai D, I=2,n三源程序:stdio.,Link &L) 初始化链表 Link p,q; q=L; for(int i=1;=n;i+) p=(Node *)malloc(sizeof(Node); if(!p)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1