//今天上机写的邻接表存储图利用BFS遍历:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
struct node//存节点所连接的点
{int id;node *next;
};
struct list//存各个节点的顶点值
{int data;node *first;
}AdjList[1000];
struct ALGraph
{int v,n;//v顶点数,边数
}ALGraph;
int vis[1000];//访问标记
void create_list(node *&head,int n)
{node *p=head;for(int i=0;i<n;++i){node *pnew=new node;scanf("%d",&pnew->id);pnew->next=NULL;p->next=pnew;p=p->next;}p->next=NULL;p=head->next;while(p){printf("%d ",p->id);p=p->next;}putchar('\n');
}
void createAdjList()
{printf("请输入领接表的顶点和弧数:");scanf("%d%d",&ALGraph.v,&ALGraph.n);for(int i=1;i<=ALGraph.v;++i){printf("请输入第%d个顶点值\n",i);scanf("%d",&AdjList[i].data);printf("请输入该点所相邻点的个数:");int n;scanf("%d",&n);printf("如果相邻点存在请输入各个顶点,不存在请输入下个顶点信息\n");node *head=new node;if(n>0){create_list(head,n);AdjList[i].first=head->next;//第一个为空}elseAdjList[i].first=NULL;}
}
void BFS()
{printf("%d ",AdjList[1].data);for(int i=1;i<=ALGraph.v;++i){while(AdjList[i].first&&!vis[i]){printf("%d ",AdjList[i].first->id);AdjList[i].first=AdjList[i].first->next;vis[i]=1;}}/*for(int i=1;i<=ALGraph.v;++i){cout<<AdjList[i].data<<" ";while(AdjList[i].first){printf("%d ",AdjList[i].first->id);AdjList[i].first=AdjList[i].first->next;}putchar('\n');}*/putchar('\n');
}
int main()
{memset(vis,0,sizeof(vis));int x;createAdjList();BFS();return 0;
}

邻接表存储图利用BFS遍历相关推荐

  1. 邻接表存储图的广度优先遍历

    试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ); 其中LGraph是邻接表存储 ...

  2. 用邻接表存储图c语言,邻接表、邻接多重表、十字链表及C语言实现

    上一节介绍了如何使用顺序存储结构存储邻接多重表和 邻接的意思是顶点之间有边或者弧存在,通过当前顶点,可以直接找到下一个顶点. 邻接表 使用邻接表存储图时,对于图中的每一个顶点和它相关的邻接点,都存储到 ...

  3. PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树

    文章目录 题目分析 题目链接 题目分析 题意重述:一棵树,求每一层的叶子节点数目. 分析 构造树,使用邻接表来存(相当于存储有向图). 需要一个头结点数组h[N],然后每个头节点往外形成一个单链表e[ ...

  4. 利用邻接表完成图的BFS和DFS

    #include <iostream> using namespace std; #define Maxsize 100 typedef char VertexType; typedef ...

  5. vector邻接表建图+DFS+BFS

    以边操作为主的图用边集数组存储比较好,相比链式前向星,vector建图更容易懂. #include <iostream> #include <cstdio> #include ...

  6. mysql 邻接表_图的邻接表存储结构详解

    通常,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表.邻接多重表和十字链表. 本节先讲解图的邻接表存储法.邻接表既适用于存储无向图,也适用于存储有向图. 在具体讲解邻接表存储图的实现方 ...

  7. 图的遍历(C语言,邻接表存储的图 - DFS,邻接矩阵存储的图 - BFS)

    邻接表存储的图 - DFS /* 邻接表存储的图 - DFS */void Visit( Vertex V ) {printf("正在访问顶点%d\n", V); }/* Visi ...

  8. 图的邻接表存储与深度优先遍历代码实现

    Graph.h Vnode结构成员firstarc在定义时赋初值NULL,在Visual Stdio 2013下编译通过,VC6.0就不行(非静态数据成员不能初始化) #include <std ...

  9. 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构|图的邻接表与深度、广度优先搜索

    线性存储元素时,元素的关系也同时确定了.而非线性数据结构就不同了,需要同时考虑存储数据元素和数据元素的关系. 由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位 ...

最新文章

  1. 数据科学干货分享来了!
  2. 解决ubuntu上ifconfig没有eth0/ens33且无法上网的问题
  3. Mybatis用法小结
  4. 用户dsn保存位置‘_苹果iOS 13.6终于能保存文章阅读进度了 朋友都等秃了
  5. RocketMQ的架构
  6. Python教程:Python中的for 语句
  7. 基于Apache POI 从xlsx读出数据
  8. python计时器单位,python(计时器)
  9. python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc
  10. select模型的原理、优点、缺点
  11. 【NLP】综述 | 跨语言自然语言处理笔记
  12. Linux 初始化 init 系统(一)
  13. CCA算法 matlab,典型相关分析(CCA)附算法应用及程序
  14. 将Final Cut Pro X工程文件导入Premiere图文版小白级操作教程
  15. Pcb课程设计2(GD32E230核心板)
  16. 成为一名合格的算法工程师需要掌握哪些技能?
  17. mac虚拟机不能识别 iphone或u盘
  18. Richard Stallman 的自由软件思想
  19. 12、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是equals()? 它们有何区别?
  20. FreeRTOS 通信方式

热门文章

  1. 给将要进入职场的同学 - 开发软件不是闭卷考试
  2. python中函数type可以测试对象类型_python类型检测最终指南--Typing模块的使用
  3. java .item,javabb-javaitem-cloud
  4. C 怎么读取Cpp文件_从PCD文件写入和读取点云数据
  5. 获取显示器的唯一编号_宝马奔驰才配拥有的HUD抬头显示器,买菜车也能无损安装!...
  6. mysql对日期的操作_MySql对日期的操作
  7. 如何访问docker内php,主机怎么访问docker里的程序
  8. python分析股票数据_Python数据可视化——股票数据分析
  9. 虚拟dom_从0到1实现一个虚拟DOM
  10. 【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)