m0_67949079 2022-05-04 10:12 采纳率: 40%
浏览 6
已结题

各位,请问这个代码有啥逻辑问题吗,为啥出不了遍历后的结果啊 图的广度优先遍历,非递归

问题遇到的现象和发生背景

邻接表创建成功了,但是不出遍历结果

问题相关代码,请勿粘贴截图

#include<stdio.h>
#include<stdlib.h>
struct jian
{
int dian;
struct jian* qa;
int in;    
}s[4];
struct biao
{
    int p;
    struct jian* bia;
}we[4];
struct  tu
{
struct biao m[4];
int n,e;    
};
int main()
{int creat(struct tu* q,int n);
void shendigui(struct tu* q,int v);
int i,j,a,n;
struct biao m[4];
printf("请输入图的顶点数目(权值不为0):");
    scanf("%d",&a);
    printf("请输入顶点的值:");
    for(i=0;i<a;i++) 
    {scanf("%d",&s[i].dian);
    }
    n=creat(m,a);
    printf("请输入相应的序号:");
    for(i=0;i<a;i++) 
    {scanf("%d",&m[i].p);
    }
    printf("边数为:%d\n",n);
    printf("请输入你要从第几个顶点开始:");
    scanf("%d",&i);
    shendigui(m,i);
    return 0;
}
int creat(struct tu *q,int n)
{int k,i,j,l;
int y[4][4];
struct jian* a;
q=(struct tu *)malloc(sizeof(struct tu));
q->n=n;
q->e=0;
for(i=0;i<n;i++)
q->m[i].bia=NULL;
    printf("请输入两顶点之间的关系,若有关系则输入1,如果没有关系则输入0");
    for(i=0;i<n;i++) 
    for(j=0;j<n;j++)
    {scanf("%d",&k);
    y[i][j]=k;}
    for(i=0;i<n;i++) 
    for(j=n-1;j>=0;j--)
    if(y[i][j]!=0){
        if(i<j)
        l++;
        a=(struct jian*)malloc(sizeof(struct jian));
        a->dian=j;
        a->qa=q->m[i].bia;
        q->m[i].bia=a;
        q->e++;
    }
    return l;}
int    vis[4]={6};
void shendigui(struct tu *q,int v)
{
    int i,j,c,w,n=0;
    int rear=0,front=0;
    struct biao* k;
    int ss[4];
    k=(struct biao*)malloc(sizeof(struct biao));
    vis[v]=1;
    k=q->m[v].bia;
    rear=(rear+1)%4;
    ss[rear]=v;
    printf("%d",v);
    printf("->");
    while(rear!=front)
    {front=(front+1)%4;
    w=ss[front];
    k=q->m[i].bia;
    while(k!=NULL)
    {if(vis[k->p]==0)
    {
        printf("%2d->",k->p);
        vis[k->p]=1;
        rear=(rear+1)%4; 
        ss[rear]=k->p;
    }
    k=k->bia;
    }}
    printf("\n");}

    
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果


实现图的广度优先遍历,显示结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月12日
    • 创建了问题 5月4日

    悬赏问题

    • ¥15 matlab无法读取mat文件,如何解决?
    • ¥15 51单片机读写24C02
    • ¥50 grlb复位怎么能够不回调?也不卡在home状态?
    • ¥15 win系统下做一个开机自动最大化运行某应用程序的执行文件
    • ¥15 grlb复位,设置设置返回行程为0,卡在home状态,怎么解决?
    • ¥100 CubeIDE更换芯片以及调整代码
    • ¥50 有没有可以远程指导问题
    • ¥15 origin柱状图,分组如何分
    • ¥15 两个不同IP互通的配置命令
    • ¥15 office弹窗激活问题