c语言实现图的广度优先遍历

本文介绍如何使用C语言实现图的广度优先遍历。通过定义图的顶点、弧点和队列结构体,以及相应的创建连接、遍历和队列操作函数,展示了完整的代码实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <stdlib.h>
//定义图的最多有20个顶点 
#define MAX_VERTEX_NUM 20

/*******定义图的顶点**************/ 
struct node{
       char data;
       int flag;//标志位(1:访问过    0:未访问 )
       struct arcNode * firstArcNode;
}; 
struct arcNode{
       int  no; 
       struct arcNode * nextArcNode;
};
/*******定义队列的结构体**********/ 
struct qNode{
       struct node * Node; 
       struct qNode * nextQNode;              
};
struct queue{
       struct qNode * front;
       struct qNode * rear;            
};
/**********方法声明*************/
//图 
void createArcNode(struct node * Node);
void rangeTraverse(struct node arrayList[],int position);
//队列 
struct queue * init();
void inQueue(struct queue * Queue,struct node * Node);
struct node * outQueue(struct queue * Queue);
int isEmpty(struct queue * Queue);
/**********Main函数***********/ 
int main(int argc, char *argv[])
{
    struct node arrayList[MAX_VERTEX_NUM];
    char ch;
    int flag = 1;//标志位,0表示输入结束 
    int position =1;
    struct arcNode * testNode;//测试用弧点 
    printf("输入顶点信息(顶点信息用一个字符表示):\n");
    printf("***输入0表示结束输入***\n");
   
    while(1){
        printf("第%d个顶点的信息为:",position);
        scanf(" %c",&arrayList[position].data);//在%c之前加空格解决把回车符当做输入字符的问题 
        if(arrayL
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值