图的广度、深度优先遍历 C语言
以下是老师作为数据结构课的作业的要求,没有什么实际用处和可以探讨和总结的的地方,所以简单代码直接展示。
宽度优先遍历:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std; #define _clr(x, y) memset(x, y, sizeof(x))
#define N 1010 int head[N], tot;
struct Edge
{
int v, next;
}edge[N];
int Queue[N];
bool used[N]; void Add(int u, int v)
{
edge[tot].v = v;
edge[tot].next = head[u];
head[u] = tot++;
} void bfs(int s)
{
_clr(Queue, );
_clr(used, );
int front=, rear=;
Queue[rear++] = ;
cout << s <<" ";
used[s] = true;
while(front < rear)
{
int Cur = Queue[front++];
for(int i=head[Cur]; i!=-; i=edge[i].next)
{
int v = edge[i].v;
if(!used[v])
{
used[v] = true;
cout << v << " ";
Queue[rear++] = v;
}
}
}
cout << endl;
}
int main()
{
int n, m, x, y;
cout << "请输入图的顶点数和边数: ";
while(cin >> n >> m && n+m)
{
tot = ;
_clr(head, -);
for(int i=; i<m; i++)
{
scanf("%d%d",&x, &y);
Add(x, y);
}
cout << "广度优先遍历顺序如下:\n";
bfs();
cout<<endl;
cout << "请输入图的顶点数和边数(输入两个0代表结束输入): ";
}
return ;
}
深度优先遍历:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std; #define _clr(x, y) memset(x, y, sizeof(x))
#define N 1010 int head[N], tot;
struct Edge
{
int v, next;
}edge[N];
int Queue[N];
bool used[N]; void Add(int u, int v)
{
edge[tot].v = v;
edge[tot].next = head[u];
head[u] = tot++;
} void dfs(int s)
{
cout << s << " ";
for(int i=head[s]; i!=-; i=edge[i].next)
{
int v = edge[i].v;
if(!used[v])
{
used[v] = true;
dfs(v);
}
}
}
int main()
{
int n, m, x, y;
cout << "请输入图的顶点数和边数: ";
while(cin >> n >> m && n+m)
{
tot = ;
_clr(head, -);
for(int i=; i<m; i++)
{
scanf("%d%d",&x, &y);
Add(x, y);
}
cout << "深优先遍历顺序如下:\n";
dfs();
cout<<endl;
cout << "请输入图的顶点数和边数(输入两个0代表结束输入): ";
}
return ;
}
图的广度、深度优先遍历 C语言的更多相关文章
- 1047图的深度优先遍历c语言
描述 图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge):E是G中边的有限集合.设V={0,1,2,……,n-1},图中的结点又称为顶点(vert ...
- 图的建立(邻接矩阵)+深度优先遍历+广度优先遍历+Prim算法构造最小生成树(Java语言描述)
主要参考资料:数据结构(C语言版)严蔚敏 ,http://blog.chinaunix.net/uid-25324849-id-2182922.html 代码测试通过. package 图的建 ...
- C语言实现邻接矩阵创建无向图&图的深度优先遍历
/* '邻接矩阵' 实现无向图的创建.深度优先遍历*/ #include <stdio.h> #include <stdlib.h> #define MaxVex 100 // ...
- [PHP] 算法-邻接矩阵图的广度和深度优先遍历的PHP实现
1.图的深度优先遍历类似前序遍历,图的广度优先类似树的层序遍历 2.将图进行变形,根据顶点和边的关系进行层次划分,使用队列来进行遍历 3.广度优先遍历的关键点是使用一个队列来把当前结点的所有下一级关联 ...
- 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...
- 图的存储及遍历 深度遍历和广度遍历 C++代码实现
/*图的存储及遍历*/ #include<iostream> using namespace std; //----------------------------------- //邻接 ...
- C++编程练习(9)----“图的存储结构以及图的遍历“(邻接矩阵、深度优先遍历、广度优先遍历)
图的存储结构 1)邻接矩阵 用两个数组来表示图,一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中边或弧的信息. 2)邻接表 3)十字链表 4)邻接多重表 5)边集数组 本文只用代码实现用 ...
- 【图的遍历】广度优先遍历(DFS)、深度优先遍历(BFS)及其应用
无向图满足约束条件的路径 •[目的]:掌握深度优先遍历算法在求解图路径搜索问题的应用 [内容]:编写一个程序,设计相关算法,从无向图G中找出满足如下条件的所有路径: (1)给定起点u和终点v. ( ...
- 图的 储存 深度优先(DFS)广度优先(BFS)遍历
图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...
随机推荐
- UVA442 栈
C - Matrix Chain Multiplication Crawling in process... Crawling failed Time Limit:3000MS Memory ...
- mysql分库分表总结<转>
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...
- ecshop中404错误页面设置
在ecshop系统当中,比如你随意将商品详细页面的地址中的ID修改为一个不存在的商品ID,ecshop会自动跳转到首页.ecshop在这方面做得非常的差,甚至导致了很多的站不被搜索引擎收录.最模板提供 ...
- 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了
打开注册表编辑器,左边窗格中显示的是“注册表项”,右边窗格中显示的是“注册表项的项值” 子项:子项是相对父项而言的,在某一个项(父项)下面出现的项(子项) 值项:一个项可以有一个或多个项值,当前被使用 ...
- CSU 1335 高桥和低桥
开始队友说是线段树,看了看貌似也是,上手敲了个嵌套的线段树,O(nlognlogn)的复杂度果断tle了 TAT 思路:对h[i]排序,对每次涨水退水,先用二分查找,再用一个数组保存当前点之后所有点被 ...
- win7 下的open live writer代码插件
open live writer 是博客园官方推荐的编辑器.恰好被它的各种便利吸引住了,于是花点时间研究一下,结果又用了好长时间,因为代码插件一时安装不了.在这里推荐小伙伴们可以先去看看这篇博文:ht ...
- Memory Region
A program's memory usage typically includes four different regions: Code -- The region where the pro ...
- iOS开发笔记--什么时候调用layoutSubviews
iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...
- 手把手教你清除WIN7的C盘垃圾
WIN7系统用着用着C盘会变得越来越大,可用空间变得越来越小,磁盘清理,和安全卫士怎么清也清不出这些系统深度的垃圾.我们可以手动删除,释放C盘空间. 这样一清理下来,结果我的C盘就释放了近10个GB的 ...
- YUM配置
一.yum环境的本地源搭建(基于VSFTP): 1)安装vsftp; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ [root ...