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

邻接矩阵的深度优先和广度优先搜索相关推荐

  1. Python 实现图的深度优先和广度优先搜索

    在介绍 python 实现图的深度优先和广度优先搜索前,我们先来了解下什么是"图". 1 一些定义 顶点 顶点(也称为"节点")是图的基本部分.它可以有一个名称 ...

  2. 6.1 图的深度优先和广度优先搜索

    图的广度优先搜索 图的的搜索算法主要分为广度优先搜索(breadth-first search或BFS)和深度优先搜索(depth-first search或DFS).首先讨论广度优先搜索算法. 称之 ...

  3. 深度优先和广度优先搜索

    目录 前言 1 深度优先搜索 2 广度优先搜索 3 深度优先和广度优先的比较 前言 最近面试,被问到了深度优先和广度优先搜索,这个我似曾相识,曾经大学的时候学到过,但是由于这几年的工作都未接触到,所以 ...

  4. 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  5. 深度优先搜索广度优先搜索

    1 概述 算法是作用于具体的数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于图这种数据结构的.主要原因是因为图的这种数据结构表达能力很强,大部分涉及搜索的场景都可以抽象成图. 图上的搜索算法 ...

  6. 图的深度优先和广度优先算法(DFS递归与非递归)

    无向图--邻接矩阵的深度优先和广度优先算法实现 测试环境:VS2008(C) [cpp:showcolumns] view plaincopyprint? ·········10········20· ...

  7. 31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?

    问题导入 给你一个用户,如何找出这个用户的所有三度(其中包含一度.二度和三度)好友关系? 搜索算法 算法是作用于具体数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于"图" ...

  8. 图数据结构,以及使用递归方式实现图的深度优先和广度优先遍历

    源码概览 1.GraphDemo,用于演示一个图结构以及图的遍历. 2.Graph,表示图数据结构,维护顶点的集合与边的集合,并提供广度优先遍历和深度优先遍历方法. 3.Edge<V>,表 ...

  9. 算法之深度优先、广度优先算法

    目录 前言: 搜索算法: 广度优先搜索算法 深度优先搜索算法 问题:如何找出社交网络中某个用户的三度好友关系? 总结: 参考资料: 前言: 图这种数据结构经常用于表示一个社交网络,在社交网络中有一个六 ...

最新文章

  1. 作为项目经理,如何处理好与不同类型客户之间的关系?
  2. HTTP 2.0与HTTP 1.0的区别 ?
  3. 优酷开放SDK之setOnCompletionListener
  4. java多线程写在哪一层_面试知识点三:Java多线程
  5. python打印字符串全排列_Python实现全排列的打印
  6. iPhone 13系列7款新机已通过EEC认证:或继续9月亮相
  7. 东航期货模拟交易brockerid(期货公司的客户号)
  8. Bee Framework_百度百科
  9. 摇滚吧HTML5!有声前端交互!(Hello, Jsonic!)
  10. 日本老人租妻女,“共享家庭”能用来抵抗孤独吗?
  11. pytorch gpu版本安装
  12. 华为P30销量破千万有多少含金量?
  13. Google Cloud Platform 注册
  14. docker 命令大全
  15. 使用APICloud AVM框架开发预约应用
  16. ravel()和flatten()以及flat的区别
  17. 计算机四级证书难考吗 考试内容是什么?
  18. 金桔蓝牙网关蓝牙连接错误代码对照表
  19. [原]Excel与OWC做报表总结
  20. [转]诺奖得主警告人类不应和外星人说话

热门文章

  1. SQL2005开启远程连接功能
  2. 手把手教你实现手绘风格图形
  3. 全球及中国多层PCB行业行业投资前景与发展趋势预测分析报告2022-2028
  4. 安全测试 : 小米(xiaomi.com)网站短信接口安全测试,如何保护短信接口?
  5. matlab实现水塔水流量问题
  6. 摄像头V4L2获取的YUY2格式转YUV420格式
  7. 公开课|“隐私计算+区块链”安全解锁数据价值
  8. 环境影响评价图件制作方法
  9. panda提取时间戳中的日期_CMIP6数据提取---Python实现方案
  10. 关于区块链的助记词以及BTC地址,私钥,公钥,ETH地址获取的方法