数据结构(六)——图之DFS和BFS遍历

代码中所用到的结构体

typedef struct arcnode
{
   
    int adjvex;//指向的下一个顶点
    struct arcnode *next;//指向这个点的另一条边
}Arcnode,*pArcnode;

typedef struct vnode
{
   
    pArcnode firstarc;//点所指向的第一条边
}Vnode,AdjList[30];

typedef struct graph
{
   
    int Vnum,Arcnum;//点的数目,边的数目
    AdjList vertice;
}Graph,*pGraph;

邻接表构造无向图

  • 首先输入图的总边数和总点数,通过输入边的起始点和终点,来确立点和点之间的关系
  • 注意点1:要申请两个新的指针p1,p2。p1从起始点指向终点,p2从终点指向起始点。以此通过两个有向的边构成一个无向的边。
  • 注意点2:注意每个点的头指针为空和不为空的情况是不一样的。
void CreateGraph(pGraph G)//构造无向图
{
   
    int i;
    int node1,node2;//暂时存储数据
    pArcnode p1,p2;//两个有向边组成一个无向边
    printf("请输入无向图的总点数:\n");
    scanf("%d",&G->Vnum);
    getchar();
    for(i=0;i<G->Vnum;i++)//给每个结点的第一个后继边初始化
    {
   
        G->vertice[i].firstarc=NULL;
    }
    printf("请输入无向图的总边数:\n");
    scanf("%d",&G->Arcnum);
    getchar();
    printf("请输入点和点之间的连接:(例:1 5)\n");
    for(i=0;i<G->Arcnum;i++)//循环输入边的信息
    {
   
        scanf("%d %d",&node1,&node2);
        getchar();
        p1=(pArcnode)malloc(sizeof(Arcnode));
        p2=(pArcnode)malloc(sizeof(Arcnode));
        p1->adjvex=node1;//构造连接,即两个有向边组成一个无向边
        p1->next=NULL;
        p2->adjvex=node2;
        p2->next=NULL;
        if(G->vertice[node1].firstarc==NULL&&G->vertice[node1]
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值