图的广度优先搜索(采用邻接表存储方式)
来源:互联网 发布:stereonet软件 编辑:程序博客网 时间:2024/05/23 11:20
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20int visited[MAXSIZE];typedef struct node{ int adjvex; struct node * next;}Node;typedef struct{ int vertex; Node * first;}VNode;typedef struct qnode{ int data; struct qnode * next;}Qnode;typedef struct{ Qnode * front; Qnode * rear;}LinkQueue;LinkQueue * init(){ //初始化队列 LinkQueue * lq; Qnode * qn; qn = (Qnode *)malloc(sizeof(Qnode)); lq = (LinkQueue *)malloc(sizeof(LinkQueue)); qn->next = NULL; lq->front = qn; lq->rear = qn; return lq;}void inLinkQueue(LinkQueue * lq,int x){ //入队 Qnode * p = (Qnode *)malloc(sizeof(Qnode)); p->data = x; p->next = NULL; lq->rear->next = p; lq->rear = p;}int outLinkQueue(LinkQueue * lq){ //出队 Qnode * p; int x; if(lq->front == lq->rear){ printf("队列为空\n"); return -1; }else{ p = lq->front->next; x = p->data; lq->front->next = p->next; free(p); if(lq->front->next == NULL){ lq->rear = lq->front; } return x; }}void create(VNode g[],int n,int e){ //创建无向图的邻接表 Node * p; int i,j; for(int t=0;t<n;t++){ g[t].vertex = t; g[t].first = NULL; } for(int k=0;k<e;k++){ printf("请输入连通边i->j\n"); scanf("%d,%d",&i,&j); p = (Node *)malloc(sizeof(Node)); p->adjvex = j; p->next = g[i].first; g[i].first = p; p = (Node *)malloc(sizeof(Node)); p->adjvex = i; p->next = g[j].first; g[j].first = p; }}void BFS(VNode g[]){ //广度优先搜索 LinkQueue * lq = init(); Node * p; int j; printf("%4d",g[0].vertex); visited[0] = 1; inLinkQueue(lq,0); while(lq->front != lq->rear){ j = outLinkQueue(lq); p = g[j].first; while(p != NULL){ if(!visited[p->adjvex]){ printf("%4d",g[p->adjvex].vertex); inLinkQueue(lq,p->adjvex); visited[p->adjvex] = 1; }else{ p = p->next; } } }}int main(){ VNode g[MAXSIZE]; int n,e; printf("请输入节点的个数!\n"); scanf("%d",&n); printf("请输入边的个数\n"); scanf("%d",&e); create(g,n,e); printf("广度优先搜索结果:\n"); BFS(g); return 0;}
0 0
- 图的广度优先搜索(采用邻接表存储方式)
- 无向图的广度优先搜索(采用邻接表存储)C++实现
- 无向图的广度优先搜索(采用邻接表存储)C++实现
- 图的深度优先搜索(采用邻接表存储方式)
- 图的广度优先搜索(邻接表)
- 图的深度、广度优先搜索(邻接表)
- 图的广度优先搜索(邻接表)
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- 图的深度优先搜索/广度优先搜索(邻接表实现)
- 【数据结构作业五】以邻接表作存储结构,广度遍历图的优先搜索序列
- 邻接图的广度优先搜索(BFS)
- BFS--广度优先搜索--图的邻接表
- 图的广度优先搜索遍历(邻接表&邻接矩阵)(C++)
- 图基本算法 图搜索基于邻接表的(广度优先、深度优先)
- 图的邻接表存储下的广度优先遍历
- 【图】图的邻接表存储和广度优先遍历
- 图的广度优先遍历(邻接表存储)
- attribute 的名字重复的问题
- 判断网络状态
- 深度学习系列文章之一:电脑配置选择
- 文档化说明的重要性
- laravel学习随记1
- 图的广度优先搜索(采用邻接表存储方式)
- CityMaker学习教程10 示例代码的使用Javascript
- Struts2找不到action报404错总结,3个解决方法
- 二、C++ 访问类的成员函数和成员变量的三种方法
- Java类与对象的理解
- hihocoder 1257 扩展欧几里得
- 数据库乱码问题
- 【Leetcode】Factorial Trailing Zeroes
- UI(base)--android