迷宫求解:严蔚敏老师的数据结构的实现

本程序的运行环境为tc2.0。

#include <stdio.h>
#include <conio.h>
#define NULL 0
struct Array
{
int x;
int y;
}arr[64],*top,*base;
int n=0;
int a[8][8]={{0,0,1,0,0,0,1,0},{0,0,1,0,0,0,1,0},{0,0,0,0,1,1,0,0},{0,1,1,1,0,0,0,0},{0,0,0,1,0,0,0,0},{0,1,0,0,0,1,0,0},{0,1,1,1,0,1,1,0},{1,0,0,0,0,0,0,0}};
void MazePath(int i,int j)
{
if(i>=0 && j>=0 && j<8 && i<8 && a[i][j]==0 && Exit(i,j))
 {
 if(n!=0) top++;
 top->x=i;
 top->y=j;
 n=n+1;
 if(!(i==7 && j==7))
  MazePath(i,j+1);
 }
else
 {
  if(i==top->x && j-1==top->y)
   MazePath(top->x+1,top->y);
  else if(i==top->x+1 && j==top->y)
   MazePath(top->x,top->y-1);
  else if(i==top->x && j+1==top->y)
   MazePath(top->x-1,top->y);
  else
  {
   do
   {
   top--;
   if(top->x==(top+1)->x && top->y+1==(top+1)->y)
    {
    MazePath(top->x+1,top->y);
    break;
    }
   else if(top->x+1==(top+1)->x && top->y==(top+1)->y)
    {
    MazePath(top->x,top->y-1);
    break;
    }
   else if(top->x==(top+1)->x && top->y-1==(top+1)->y)
    {
    MazePath(top->x-1,top->y);
    break;
    }
   }while(top!=NULL);
  }
 }
}
int Exit(int i,int j)
{
struct Array *p;
p=base;
while(p!=top)
{
if(p->x==i && p->y==j)
 return(0);
p++;
}
return(1);
}
void main()
{
int b;
clrscr();
top=base=arr;
MazePath(0,0);
while(top!=base)
{
printf("%d,%d/n",top->x,top->y);
top--;
}
printf("%d,%d/n",base->x,base->y);
scanf("%d",&b);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值