文档介绍:#include<>#include<>#definestack_size100#definestackincrement10#defineN8intweight[N][N];intboard[N][N][8];typedefstruct//位置{ intx; inty;}postype;typedefstruct//栈的元素{ intord; postypeseat;//点 intdi;//马的方向}elemtype;typedefstruct//定义栈{ elemtype*base; elemtype*top; intstacksize;}sqstack;sqstacks;intinitstack()//初始化一个空栈{ =(elemtype*)malloc(stack_size*sizeof(elemtype)); if(!)return0; =; =stack_size; return1;}elemtypegettop()//取得栈顶值{ if(==) exit(0); return*(-1);}voidpush(elemtypeelem)//将元素压入栈{ *++=elem;}intpop(elemtype*elem)//将栈顶值出栈{ if(==)return0; *elem=*--; return1;}intstackempty()//判断栈空{ if(=)return1; elsereturn0;}voidoutputpath()//输出马走过的路径{ inti,f,k; sqstacks1=s; intpath[N][N];for(i=0;!=;i++) { path[(*).][(*).]=i+1; ++; } for(f=0;f<N;f++) { printf("\n"); for(k=0;k<N;k++)printf("\t%d",(path[f][k])); } printf("\n");}intpass(postypecurpos)//判断当前位置是否合法{ sqstacks1=s; if(<0||>(N-1)||<0||>(N-1))return0; for(;!=;) { --; if(==(*).&&==(*).)return0; } return1;}postypenextpos(postypecurpos,intdirection)//8个候选方向{ switch(direction) { case1:+=1;-=2;break;case2:+=2;-=1;break;case3:+=2;+=1;break;case4:+=1;