邻接矩阵的深度优先和广度优先搜索
c语言中图的邻接矩阵的深度优先和广度优先搜索
#include<stdio.h>
#include<stdlib.h>
typedef struct
{int vexs[7];int arcs[7][7];int vexnum,arcnum;
}AMGraph;
bool visited[7];
int con[7];
int com=0;
int initlink(AMGraph &p)
{int i;for(i=0;i<p.vexnum;i++)visited[i+1]=false;for (i=0;i<7;i++){con[i]=NULL;}
}
int push(int n)
{con[com]=n;com+=1;
}
int pop()
{int i,j;i=con[0];if (con[1]==NULL){com-=1;con[0]=NULL;return i;}for (j=0;j<6;j++){if(con[j+1]!=NULL){con[j]=con[j+1];con[j+1]=NULL;}}com-=1;return i;
}
int Init(AMGraph &p)
{int i,j;p.vexnum=p.arcnum=7;p.arcs[0][1]=p.arcs[0][2]=p.arcs[0][3]=p.arcs[0][4]=p.arcs[0][6]=1;p.arcs[1][3]=p.arcs[1][6]=1;p.arcs[2][4]=1;p.arcs[3][4]=p.arcs[3][5]=1;p.arcs[4][5]=1;p.arcs[5][6]=1;p.arcs[0][5]=0;for (i=0;i<7;i++){p.vexs[i]=i;for (j=0;j<7;j++){if(p.arcs[i][j]==1){p.arcs[j][i]=1;continue;}p.arcs[i][j]=0;}}p.arcs[0][5]=p.arcs[5][0]=0;
}
int DFS(AMGraph &p,int n)//深度优先搜索
{int i,j;printf("%d ",n);visited[n]=true;for (i=0;i<7;i++){if (p.arcs[n][i]==1){if(!visited[i])DFS(p,i);}}
}
int DFSTraverse(AMGraph &p)//深度优先
{int i,j;for(i=0;i<p.vexnum;i++)visited[i+1]=false;for(i=0;i<p.vexnum;i++)if(!visited[i])DFS(p,i);
}
int BFS(AMGraph &p,int n)
{int i,j,v;initlink(p);printf("%d ",n);push(n);while(com!=0){v=pop();for (i=0;i<7;i++){if (p.arcs[v][i]==1){if(!visited[i]){printf("%d ",i);visited[i]=true;push(i);}}}}return 0;
}
int main()
{//头指针尾指针 AMGraph p;Init(p);DFSTraverse(p);printf("\n");BFS(p,0);
}
程序输出:
深度优先:0134256
广度优先:0123456
邻接矩阵的深度优先和广度优先搜索相关推荐
- Python 实现图的深度优先和广度优先搜索
在介绍 python 实现图的深度优先和广度优先搜索前,我们先来了解下什么是"图". 1 一些定义 顶点 顶点(也称为"节点")是图的基本部分.它可以有一个名称 ...
- 6.1 图的深度优先和广度优先搜索
图的广度优先搜索 图的的搜索算法主要分为广度优先搜索(breadth-first search或BFS)和深度优先搜索(depth-first search或DFS).首先讨论广度优先搜索算法. 称之 ...
- 深度优先和广度优先搜索
目录 前言 1 深度优先搜索 2 广度优先搜索 3 深度优先和广度优先的比较 前言 最近面试,被问到了深度优先和广度优先搜索,这个我似曾相识,曾经大学的时候学到过,但是由于这几年的工作都未接触到,所以 ...
- 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- 深度优先搜索广度优先搜索
1 概述 算法是作用于具体的数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于图这种数据结构的.主要原因是因为图的这种数据结构表达能力很强,大部分涉及搜索的场景都可以抽象成图. 图上的搜索算法 ...
- 图的深度优先和广度优先算法(DFS递归与非递归)
无向图--邻接矩阵的深度优先和广度优先算法实现 测试环境:VS2008(C) [cpp:showcolumns] view plaincopyprint? ·········10········20· ...
- 31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
问题导入 给你一个用户,如何找出这个用户的所有三度(其中包含一度.二度和三度)好友关系? 搜索算法 算法是作用于具体数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于"图" ...
- 图数据结构,以及使用递归方式实现图的深度优先和广度优先遍历
源码概览 1.GraphDemo,用于演示一个图结构以及图的遍历. 2.Graph,表示图数据结构,维护顶点的集合与边的集合,并提供广度优先遍历和深度优先遍历方法. 3.Edge<V>,表 ...
- 算法之深度优先、广度优先算法
目录 前言: 搜索算法: 广度优先搜索算法 深度优先搜索算法 问题:如何找出社交网络中某个用户的三度好友关系? 总结: 参考资料: 前言: 图这种数据结构经常用于表示一个社交网络,在社交网络中有一个六 ...
最新文章
- 作为项目经理,如何处理好与不同类型客户之间的关系?
- HTTP 2.0与HTTP 1.0的区别 ?
- 优酷开放SDK之setOnCompletionListener
- java多线程写在哪一层_面试知识点三:Java多线程
- python打印字符串全排列_Python实现全排列的打印
- iPhone 13系列7款新机已通过EEC认证:或继续9月亮相
- 东航期货模拟交易brockerid(期货公司的客户号)
- Bee Framework_百度百科
- 摇滚吧HTML5!有声前端交互!(Hello, Jsonic!)
- 日本老人租妻女,“共享家庭”能用来抵抗孤独吗?
- pytorch gpu版本安装
- 华为P30销量破千万有多少含金量?
- Google Cloud Platform 注册
- docker 命令大全
- 使用APICloud AVM框架开发预约应用
- ravel()和flatten()以及flat的区别
- 计算机四级证书难考吗 考试内容是什么?
- 金桔蓝牙网关蓝牙连接错误代码对照表
- [原]Excel与OWC做报表总结
- [转]诺奖得主警告人类不应和外星人说话
热门文章
- SQL2005开启远程连接功能
- 手把手教你实现手绘风格图形
- 全球及中国多层PCB行业行业投资前景与发展趋势预测分析报告2022-2028
- 安全测试 : 小米(xiaomi.com)网站短信接口安全测试,如何保护短信接口?
- matlab实现水塔水流量问题
- 摄像头V4L2获取的YUY2格式转YUV420格式
- 公开课|“隐私计算+区块链”安全解锁数据价值
- 环境影响评价图件制作方法
- panda提取时间戳中的日期_CMIP6数据提取---Python实现方案
- 关于区块链的助记词以及BTC地址,私钥,公钥,ETH地址获取的方法