| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1968 人关注过本帖
标题:求解答,为什么深度 广度不能一起运行?怎么改?
只看楼主 加入收藏
在校生
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-9-18
结帖率:0
收藏
 问题点数:0 回复次数:1 
求解答,为什么深度 广度不能一起运行?怎么改?
#define MAX_VEX 100
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
    int adjvex;
    struct node * next;
}ARCNODE;
typedef struct vexnode
{
    int vertex;
    ARCNODE *firstarc;
}VEXNODE;
VEXNODE adjlist[MAX_VEX];
void bfs(int v);
void dfs(int v);
int creatadjlist()
{
    ARCNODE * ptr;
    int arcnum,vexnum,k,v1,v2;
    printf("请输入顶点数和边数(输入格式为:顶点数,边数):");
    scanf("%d,%d",&vexnum,&arcnum);
    for(k=1;k<=vexnum;k++)
        adjlist[k].firstarc=0;
    for(k=0;k<arcnum;k++)
    {
        printf("v1,v2=");
        scanf("%d,%d",&v1,&v2);
        ptr=(ARCNODE *)malloc(sizeof(ARCNODE));
        ptr->adjvex=v2;
        ptr->next=adjlist[v1].firstarc;
        adjlist[v1].firstarc=ptr;
        ptr=(ARCNODE *)malloc(sizeof(ARCNODE));
        ptr->adjvex=v1;
        ptr->next=adjlist[v2].firstarc;
        adjlist[v2].firstarc=ptr;
    }
    return(vexnum);
}
void dfs(int v)
{
    int w;
    ARCNODE *p;
    p=adjlist[v].firstarc;
    printf("%d",v);
    adjlist[v].vertex=1;
    while(p!=NULL)
    {
        w=p->adjvex;
        if(adjlist[w].vertex==0)
            dfs(w);
        p=p->next;
    }
}
void bfs(int v)
{
    int queue[MAX_VEX];
    int front=0,rear=1;
    ARCNODE *p;
    p=adjlist[v].firstarc;
    printf("%d",v);
    adjlist[v].vertex=1;
    queue[rear]=v;
    while(front!=rear)
    {
        front=(front+1)%MAX_VEX;
        v=queue[front];
        p=adjlist[v].firstarc;
        while(p!=NULL)
        {
            if(adjlist[p->adjvex].vertex==0)
            {
                adjlist[p->adjvex].vertex=1;
                printf("%d",p->adjvex);
                rear=(rear+1)%MAX_VEX;
                queue[rear]=p->adjvex;
            }
            p=p->next;
        }
    }
}
main()
{
    int i,n,v;
    ARCNODE *p;
    n=creatadjlist();
    printf("所见图的邻接表为:\n");
    for(i=1;i<=n;i++)
    {
        printf("%d==>",i);
        p=adjlist[i].firstarc;
        while(p!=NULL)
        {
            printf("-- -->%d",p->adjvex);
            p=p->next;
        }
        printf("\n");
    }
    printf("输入深度优先搜索起始顶点v:");
    scanf("%d",&v);
    printf("图的深度优先搜索序列DFS:");
    dfs(v);
    printf("\n");
    printf("输入广度优先搜索起始顶点v:");
    scanf("%d",&v);
    printf("图的广度优先搜索序列BFS:");
    bfs(v);
}
搜索更多相关主题的帖子: include 
2016-12-09 16:09
Ocean1
Rank: 2
等 级:论坛游民
帖 子:25
专家分:20
注 册:2016-11-10
收藏
得分:0 
main()
{
    int i,n,v;
    ARCNODE *p;
    n=creatadjlist();
    printf("所见图的邻接表为:\n");
    for(i=1;i<=n;i++)
    {
        printf("%d==>",i);
        p=adjlist[i].firstarc;
        while(p!=NULL)
        {
            printf("-- -->%d",p->adjvex);
            p=p->next;
        }
        printf("\n");
    }
    printf("输入深度优先搜索起始顶点v:");
    scanf("%d",&v);
    printf("图的深度优先搜索序列DFS:");
    dfs(v);   
    printf("\n");  
    printf("图的广度优先搜索序列BFS:");
    bfs(v);
    printf("\n");
 
 

}

这样写就可以了,但是你的广度遍历有点问题
2016-12-18 21:50
快速回复:求解答,为什么深度 广度不能一起运行?怎么改?
数据加载中...
 
   



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

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