十字嫁女婚联精选大全:C程序求助

来源:百度文库 编辑:中科新闻网 时间:2024/05/12 00:59:59
帮我把这个程序详细的步骤都说一遍把
我快要崩溃了哦先谢谢各位大哥了!
#include"stdio.h"
#include"linkstack.c"
#define ROWS 8
#define COLUMNS 11
static int maze[ROWS][COLUMNS]=/*迷宫*/
{ {1,1,1,1,1,1,1,1,1,1,1},
{1,0,1,0,0,0,1,1,0,0,1},
{1,1,0,0,0,1,1,0,1,1,1},
{1,0,1,1,0,0,0,0,1,1,1},
{1,1,1,0,1,1,1,1,0,1,1},
{1,1,1,0,1,0,0,1,0,0,1},
{1,0,0,1,1,1,0,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1,1}}
static int movei[8]={-1,-1,0,1,1,1,0,-1};
static int movej[8]={0,1,1,1,0,-1,-1,-1};
linkstack *ls=NULL;
datatype *a=NULL;
int curi=1,curj=1; /*入口位置*/
int nexti,nextj; /*下一个位置的行、列坐标*/
int nextd[2];
int d=2; /*方向值,入口位置maze[1][1]的第0、1方向必然不通, 所以将初始值直接设为 2,从E方向开始试探*/
main( )
{ stopmaze=FALSE;
int outnum(),back(),fork();
void print( );
ls=linkstacknull(ls);
while(!stopmaze)
{ switch(outnum(curi,curj,d))
{ case –1: stopmaze=TRUE;
break; /*出口位置则成功*/
case 0: if(back(&curi,&curj,&d)==ERROR)
{ printf("\n no solustion \n");
exit();
}
case 2: if(fork(curi,curj,nextd[1]==ERROR)
{ printf("\n no solustion \n");
exit();
}
case 1: curi=nexti;
curj=nextj;
dir=0; /*每个位置从第0个方向开始*/
maze[curi][curj]='*';
} }
print(); } /*函数outnum返回出口个数*/
int outnum(i,j,dd)
int i,j,dd;
{ int count,k;
for(k=dd,count=0;(k<=7&&count<=1);k++)
{ if(i==(ROWS-2)&&(j==(COLUMN-2))
return –1;
if(maze[i+movei[k]][j+movej[k]]==0)
{ nextd[count++]=k;
if(count==1)
{ nexti=i+movei[k];
nextj=j+movej[k];
} } }
return count;
} /*函数back执行回溯操作*/
back(ip,jp,dp)
int *ip,*jp,*dp;
{ ElemType *temp;
if(empty(ls))
return ERROR;
pop(ls,temp);
*ip=*temp.i;
*jp = *temp.j;
*dp=*temp.dir;
return OK;
} /*函数fork将分支点信息送入栈内*/
fork(i,j,d)
int i,j,d;
{ ElemT ype temp;
temp.i=i;
temp.j=j;
temp.d=d;
return(linkpush(ls,temp);
}
print() /*函数print打印结果*/
{ int i,j;
printf("\n");
for(i=0;i<ROWS;i++)
{ for(j=0;j<CLOUMNS;j++)
if(maze[i][j]=='*')
printf("%c",'*');
else
printf("%d",maze[i][j]);
printf("\n");
} }
现在只要把每个句子结实清楚就OK啦
各位大哥大姐们帮帮小弟弟呀

这个程序不完全啊,还有linkstack.c这个文件