| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:数据结构迷宫求解,运行几步之后就停止运行了,找了好久的错误了,找不到, ...
只看楼主 加入收藏
迟珩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
数据结构迷宫求解,运行几步之后就停止运行了,找了好久的错误了,找不到,我真的花了很久的时间去运行但是找不到问题在哪,请各位帮帮忙,感激不尽
#include<stdio.h>
#include<stdlib.h>
#define n1 10
#define n2 10
typedef struct Zhan{
    int i;
    int j;
    struct Zhan*next;
}*zhan,lnode;
typedef struct zu{
    int a[n1][n2];//标识是否是通路,若是为0,否为1
    int h[n1][n2];//标识是否已访问,若已访问,则为1,否为0
}mase;
void push(zhan &s,zhan &top)
{
    top=s;
    s=(zhan)malloc(sizeof(lnode));
    s->next=top;
}
void main()
{
    zhan top,base,s,q;
    mase R;
    int b,c,e,f,i,j;
    printf("请输入迷宫的数据\n");
    for(i=0;i<n1;i++)
        for(j=0;j<n2;j++)
        scanf("%d",&R.a[i][j]);
    base=top=s=(zhan)malloc(sizeof(lnode));
    printf("请输入入口和出口的坐标:\n");
    scanf("%d%d%d%d",&b,&c,&e,&f);
    R.h[b][c]=0;
    do
    {
        if(R.a[b][c]==0&&R.h[b][c]!=1)
        {
            s->i=b;s->j=c;
            R.h[b][c]=1;push(s,top);
        }
        if(R.a[b][c+1]==0&&R.h[b][c+1]!=1)
            {
                c=c+1;
                s->i=b;s->j=c;push(s,top);
                R.h[b][c]=1;
            }
        else if(R.a[b+1][c]==0&&R.h[b+1][c]!=1)
            {
                b=b+1;
                s->i=b;s->j=c;push(s,top);
                R.h[b][c]=1;}
            else if(R.a[b][c-1]==0&&R.h[b][c-1]!=1)
            {
                c=c-1;
                s->i=b;s->j=c;push(s,top);
                R.h[b][c]=1;
            }
            else if(R.a[b-1][c]==0&&R.h[b-1][c]!=1)
            {
                b=b-1;
                s->i=b;top->j=c;push(s,top);
                R.h[b][c]=1;
            }
            else
            {
                q=top;
                s->next=q->next;
                free(q);
                top=s->next;
                b=top->i;c=top->j;
            }
   

    }while(base&&top->i!=e||top->j!=f);base->next =NULL;
    if(base=NULL)
        printf("erro\n");
    else
    {
        printf("路径为:\n");
    while(top)
    {
        printf(" <- (%d,%d)",top->i,top->j);
        top=top->next;
    }
    }
    printf("\n");
}



迷宫数据为:
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   
入口*(1,1)出口*(8,8)      sorry啊,我不会怎么把运行的图片传上来

[ 本帖最后由 迟珩 于 2014-6-22 10:09 编辑 ]
搜索更多相关主题的帖子: include 通路 
2014-06-21 20:16
rmbking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:36
专家分:157
注 册:2014-3-19
收藏
得分:10 
你的能运行么?push中的形参zhan &s编译能通过么。。。。
2014-06-21 21:13
迟珩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-21
收藏
得分:0 
回复 2 楼 rmbking
能啊,在.cpp中能得
2014-06-22 00:03
迟珩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-21
收藏
得分:0 
各位大侠,路过就过来瞧瞧吧,个人能力有限,一直运行不了,我很焦虑,希望大家帮帮忙,感激不尽
2014-06-22 11:20
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:10 
仔细一点就好了
else if(R.a[b-1][c]==0&&R.h[b-1][c]!=1)
{
    b=b-1;
    //s->i=b;top->j=c;push(s,top);
    s->i=b;s->j=c;push(s,top);
    R.h[b][c]=1;
}
这样代码就没问题了,不知道用的是什么环境,如果是vs
最后printf("\n");下面加一句system("pause");可以不让窗体一闪而过
2014-06-22 22:17
快速回复:数据结构迷宫求解,运行几步之后就停止运行了,找了好久的错误了,找不 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016494 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved