c++ 深度优先算法
时间:2020-01-09
本文章向大家介绍c++ 深度优先算法,主要包括c++ 深度优先算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#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]=1;//已查找 cout<<Vertex<<"==>"; Pointer=Head[Vertex].Next; while(Pointer!= NULL) { if(Visited[Pointer->Vertex]==0) 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[20][2]={{1,2},{2,1},{1,3},{3,1},{2,4}, {4,2},{2,5},{5,2},{3,6},{6,3}, {3,7},{7,3},{4,8},{8,4},{5,8}, {8,5},{6,8},{8,6},{7,8},{8,7} }; for(int i=0;i<VertexNum;i++) { Head[i].Vertex=i; Head[i].Next=NULL; } for(int i=0;i<VertexNum;i++) Visited[i]=0; for(int i=0;i<20;i++) Create_L_Graph(Node[i][0],Node[i][1]); cout<<"##Graph##"<<endl; for(int i=1;i<VertexNum;i++) { cout<<"Vertex["<<i<<"]:"; Print_L_Graph(&Head[i]); } cout<<"Depth-First-Search:"<<endl; cout<<"[BEGIN]==>"; DFS(1); cout<<"END"; }
原文地址:https://www.cnblogs.com/tobetterlife/p/12170941.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 想去看机会?这10道最高频的手撕代码题都会了吗?
- 你知道Python中的4种变量作用域是哪些吗?
- 图解 Python 浅拷贝与深拷贝
- 打卡群刷题总结0716——不同路径
- 原理 + 代码|手把手教你用Python实现智能推荐算法
- 机器学习必刷题-基础概念篇(1):为什么用AUC做评价指标?
- 机器学习必刷题-手撕推导篇(3):FM与softmax
- Python面试必刷题系列(4)
- SQL面试必刷题(1) Case When
- 张量的数学运算
- 数据结构高频面试题-图
- nn.functional和nn.Module
- 20分钟学会DBSCAN聚类算法
- Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
- Dataset和DataLoader