Cluoluoya 2016-04-07 01:36
浏览 1347

求能帮忙改改迷宫的代码

图片说明
走用链栈走迷宫,我的代码如下。一直调试不成功,希望能求救
#include
#include
#define M 10
#define N 10

typedef struct stack_type{
struct block_type *top;

}stack_type;

typedef struct block_type{
int i,j;

int di;
struct block_type *next;

}block_type;

int mg[M+1][N+1]={
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,0,0,1,1,0,0,1},
{1,0,1,1,1,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,1},
{1,0,1,0,0,0,1,0,0,1},
{1,0,1,1,1,0,1,1,0,1},
{1,1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1}};
int main(void)
{
int i,j,di,find,k;
stack_type *s;
s=malloc(sizeof(stack_type));
block_type *p;
p=malloc(sizeof(block_type));
p->i=1;
p->j=1;
p->di=-1;
mg[1][1]=-1;
s->top=p;

while(s->top!=NULL){
i=p->i;j=p->j;di=p->di;
if(i==M-2&&j==N-2){
printf("The path is:\n");
for ( ;s->top!=NULL;s->top=s->top->next){
printf("\t(%d,%d)",s->top->i,s->top->j);
}
return 0;
}

find=0;
while (di {di++;
switch(di){
case 0: i = s->top->i - 1;
j = s->top->j; break;
case 1: i = s->top->i;
j =s->top->j+1; break;
case 2: i = s->top->i + 1;
j = s->top->j; break;
case 3: i = s->top->i;
j = s->top->j - 1; break;
}
if (mg[i][j]==0){
find=1;
}
}

          if(find==1){
            block_type *p;
            p=malloc(sizeof(block_type));
                 p->di=di;
                 p->i=i;
                 p->j=j;
                 p->di=-1;
                 mg[i][j]=-1;
                   s->top->next=p;       
           }
           else
           {
           mg[s->top->i][s->top->j]=0;
           block_type *temp;
           temp=s->top;
           s->top=s->top->next;
           free(temp); 
            }  
    }
return 0;

}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥100 c语言,请帮蒟蒻看一个题
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)