#include <iostream>
using namespace std; #define VertexNum 9 /*定义顶点数*/ struct Node /*声明图形顶点结构*/
{
int Vertex; /*邻接顶点数据*/
struct Node *Next; /*下一个邻接顶点*/
}; typedef struct Node *Graph; /*定义图形结构*/
struct Node Head[VertexNum]; /*顶点数组*/
int Visited[VertexNum]; /*查找记录*/ /*深度优先算法*/
void DFS(int Vertex)
{
Graph Pointer; Visited[Vertex]=;//已查找
cout<<Vertex<<"==>";
Pointer=Head[Vertex].Next; while(Pointer!= NULL)
{
if(Visited[Pointer->Vertex]==)
DFS(Pointer->Vertex);
Pointer=Pointer->Next;
}
} /*建立领接顶点至领接列表内*/
void Create_L_Graph(int Vertex1,int Vertex2)
{
Graph Pointer;
Graph New; New=(Graph)malloc(sizeof(struct Node));
if(New!=NULL)
{
New->Vertex=Vertex2;
New->Next=NULL;
Pointer=&(Head[Vertex1]);
while(Pointer->Next!=NULL)
Pointer=Pointer->Next;
Pointer->Next=New;
}
} /*输出领接列表内数据*/
void Print_L_Graph(struct Node *Head)
{
Graph Pointer;
Pointer=Head->Next;
while(Pointer!=NULL)
{
cout<<"["<<Pointer->Vertex<<"]";
Pointer=Pointer->Next;
}
cout<<endl;
} /*主程序*/
void main()
{
int Node[][]={{,},{,},{,},{,},{,},
{,},{,},{,},{,},{,},
{,},{,},{,},{,},{,},
{,},{,},{,},{,},{,} }; for(int i=;i<VertexNum;i++)
{
Head[i].Vertex=i;
Head[i].Next=NULL;
} for(int i=;i<VertexNum;i++)
Visited[i]=; for(int i=;i<;i++)
Create_L_Graph(Node[i][],Node[i][]); cout<<"##Graph##"<<endl;
for(int i=;i<VertexNum;i++)
{
cout<<"Vertex["<<i<<"]:";
Print_L_Graph(&Head[i]);
} cout<<"Depth-First-Search:"<<endl;
cout<<"[BEGIN]==>";
DFS();
cout<<"END"; }

c++ 深度优先算法的更多相关文章

  1. [ACM训练] 算法初级 之 搜索算法 之 深度优先算法DFS (POJ 2251+2488+3083+3009+1321)

    对于深度优先算法,第一个直观的想法是只要是要求输出最短情况的详细步骤的题目基本上都要使用深度优先来解决.比较常见的题目类型比如寻路等,可以结合相关的经典算法进行分析. 常用步骤: 第一道题目:Dung ...

  2. Java与算法之(5) - 老鼠走迷宫(深度优先算法)

    小老鼠走进了格子迷宫,如何能绕过猫并以最短的路线吃到奶酪呢? 注意只能上下左右移动,不能斜着移动. 在解决迷宫问题上,深度优先算法的思路是沿着一条路一直走,遇到障碍或走出边界再返回尝试别的路径. 首先 ...

  3. 广度优先算法(BFS)与深度优先算法(DFS)

    一.广度优先算法BFS(Breadth First Search) 基本实现思想 (1)顶点v入队列. (2)当队列非空时则继续执行,否则算法结束. (3)出队列取得队头顶点v: (4)查找顶点v的所 ...

  4. 在图中寻找最短路径-----深度优先算法C++实现

    求从图中的任意一点(起点)到另一点(终点)的最短路径,最短距离: 图中有数字的点表示为图中的不同海拔的高地,不能通过:没有数字的点表示海拔为0,为平地可以通过: 这个是典型的求图中两点的最短路径:本例 ...

  5. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  6. Unity中通过深度优先算法和广度优先算法打印游戏物体名

    前言:又是一个月没写博客了,每次下班都懒得写,觉得浪费时间.... 深度优先搜索和广度优先搜索的定义,网络上已经说的很清楚了,我也是看了网上的才懂的,所以就不在这里赘述了.今天讲解的实例,主要是通过自 ...

  7. 图的存储,搜索,遍历,广度优先算法和深度优先算法,最小生成树-Java实现

    1)用邻接矩阵方式进行图的存储.如果一个图有n个节点,则可以用n*n的二维数组来存储图中的各个节点关系. 对上面图中各个节点分别编号,ABCDEF分别设置为012345.那么AB AC AD 关系可以 ...

  8. 深度优先算法DFS

    英雄要从H点出发,去解救位于M点的美女. 迷宫的围墙用#表示,带*号的位置表示有杀手埋伏,这些点都是不能走的, 那么英雄要最少走多少步才能解救美女呢? package myalgorithm; imp ...

  9. DFS深度优先算法学习

    刚开始学习算法,参考大佬博客还是有很多不明白的,于是一步步解析,写下笔记记录. 大佬博客地址: https://blog.csdn.net/fuzekun/article/details/852204 ...

随机推荐

  1. Java笔记--多线程

    1.线程的创建与运行(方式一): --1)创建一个Thread的子类: --2)重写Thread类的run()方法: --3)创建一个子类的对象: --4)调用线程的start()方法来启动线程,Ja ...

  2. 03.swoole学习笔记--web服务器

    <?php //创建web服务器 $serv=); //获取请求 /* * $request:请求信息 * $response:响应信息 */ $serv->on('request',fu ...

  3. 007、MySQL日期取当前时间,取昨天

    #取今天文本格式 SELECT DATE_SUB( curdate( ), INTERVAL DAY ); #取昨天文本格式 SELECT DATE_SUB( curdate( ), INTERVAL ...

  4. YOKOGAWA ProSafe-RS 通道测试 CENTUMVP

    20180927 我并没有调试这个项目 仅仅是听同事讲解了 横河ProSafe-RS通道测试 然后做了笔记 软件安装并不在本记录中 ProSafe-RS版本 CENTUMVP版本 ProSafe-RS ...

  5. P1048 数字加密

    P1048 数字加密 转跳点:

  6. 八十四、SAP中的ALV创建之三,创建ALV表格

    一.销售表是2个表,一个抬头表,一个是销售内容表,数据库查询语句如下, 二.我们添加相关LAYOUT的格式控制如下 三.需要报每个字段都用相应的LAYOUT控制一下 四.点击模式,在模式里面,添加RE ...

  7. C#的listview

    listView1.Items.Clear(); ListViewItem listitem = new ListViewItem(字符串);//这是第一列的内容,需要,而且必须通过构造方法添加 ; ...

  8. java高并发核心类 AQS(Abstract Queued Synchronizer)抽象队列同步器

    什么是AQS? 全称: Abstract Queued Synchronizer: 抽象队列同步器 是 java.util.concurrent.locks包下的一个抽象类 其编写者: Doug Le ...

  9. 修改ssh主机名

    三台机器的配置相似,以zk1为例 1.修改hostname vi /etc/hostname zk1 2.修改hosts文件 vi /etc/hosts 10.45.48.233 zk1 10.45. ...

  10. Inception Score

    转载 https://www.jiqizhixin.com/articles/2019-01-10-18    全面解析Inception Score原理及其局限性 https://blog.csdn ...