当前位置: 首页 > 编程日记 > 正文

图的创建及深度遍历

#include <iostream>
using namespace std;
#include <malloc.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2#define INFINITY INT_MAX //最大值为无穷大
#define MAX_VERTEX_NUM 20   //最大顶点个数
typedef int Status;
int visited[MAX_VERTEX_NUM];//标志数组,判断结点是否访问
Status (*VisitFunc)(int v);//全局函数指针typedef struct{char vexs[MAX_VERTEX_NUM];//顶点向量int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//边的权值int vexnum,arcnum;//图的当前顶点数和弧数
}MGraph;int LocateVex(MGraph &G,char v)
{int i;for(i=0;i<G.vexnum;i++){if(v==G.vexs[i])return i;}return -1;
}
Status Create(MGraph &G)//采用邻接矩阵表示法,构造无向图G
{int i,j,k;char v1,v2;cout << "请输入顶点数和弧数:" << endl;cin>>G.vexnum>>G.arcnum;cout << "请输入顶点信息:" << endl;for(i=0;i<G.vexnum;i++){cin>>G.vexs[i];}for(i=0;i<G.vexnum;i++)//初始化邻接矩阵for(j=0;j<G.vexnum;j++){G.arcs[i][j]=0;}cout << "请输入一条边依附的两个顶点:" << endl;for(k=0;k<G.arcnum;k++)//构造邻接矩阵{cin>>v1>>v2;i = LocateVex(G,v1);//确定V1,V2在G中的位置j = LocateVex(G,v2);G.arcs[j][i]=G.arcs[i][j]=1;//置<v1,v2>的对称弧<v2,v1>}cout << "创建的邻接矩阵如下:" << endl;for(i=0;i<G.vexnum;i++){for(j=0;j<G.vexnum;j++){printf("%3d",G.arcs[i][j]);}printf("\n");}return OK;
}int FirstAdjVex(MGraph G,int v)
{int i;for(i=0;i<G.vexnum;i++)if(G.arcs[0][i]==1)return i;return -1;
}
int NextAdjVex(MGraph G,int v,int w)
{int i;for(i=w+1;i<G.vexnum;++i){if(G.arcs[v][i]==1)return i;}return -1;
}
Status Print(int v)
{cout<<v+1;return OK;
}
//遍历完所有与v联通的顶点 查找邻接点。
void DFS(MGraph G,int v)
{int w;visited[v]=TRUE;VisitFunc(v);//访问第v个结点for(w=FirstAdjVex(G,v);w!=-1;w=NextAdjVex(G,v,w))if(!visited[w])DFS(G,w);
}void DFSTraverse(MGraph G,Status(Visit)(int v))
{/*图的深度优先遍历访问v 逐个从v的邻接点出发,若其未访问则从其开始递归遍历,如此可遍历所有与v连通的顶点 若尚有顶点未访问 则从其开始重复上述过程*/int v;VisitFunc = Visit;for(v=0;v<G.vexnum;++v)visited[v]=FALSE;for(v=0;v<G.vexnum;++v)if(!visited[v])DFS(G,v);
}int main()
{MGraph G;Create(G);DFSTraverse(G,Print);/*cout << "Hello world!" << endl;*/return 0;
}

相关文章:

showModalDialog 传值及刷新

(一)showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口. farther.html --------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITL…

简单实现ConfigurationManager.AppSettings[]效果存储系统变量

代码一:存储变量和常量的Class.Code1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.Collections.Specialized; 5 6namespace TestTemp.ConsoleApp 7{ 8 public class Config 9 {10 string[] keys new string[] { "N…

数据结构|-常见数据结构整理

归纳总结了一下数据机构的常用类型&#xff0c;个人理解常用的数据机构可以分为线性表、栈、队列、树&#xff0c;线性表包括顺序表和链表&#xff0c;栈和队列应当属于特殊的线性表&#xff0c;有几个概念和误区需要先说一下 顺序表和线性表的关系&#xff1a; 线性表是逻辑概…

数据结构课程上机参考代码

SqList #include <iostream>using namespace std;#include <malloc.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status; /* int是函数的类型,其值是函数结果状态代码&#xff0c;如OK等 */…

我的路子 - 发现游戏为模型的软件架构方式

总觉得如果一个内容被深刻地理解了&#xff0c;那么当在他口中说出来的时候&#xff0c;应该是很简单才对。 所以一直觉得&#xff0c;编程里那些不容易理解的&#xff0c;需要记住很多内容的东西都是有缺陷的。自己又比较自我认可强&#xff0c;看不到别人的角度&#xff0c;表…

Vim对中文编码的支持[转]

Vim对中文编码的支持[转] Vim对中文编码的支持 1、支持中文编码的基础 Vim要更好地支持中文编码需要两个特性&#xff1a;multi_byte和iconv&#xff0c;可以用|:version|命令检查当前使用的Vim是否支持&#xff0c;否则的话需要重新编译。 2、影响中文编码的设置项 Vim中有几个…

C/C++中extern关键字详解

1 基本解释 &#xff1a;extern可以置于变量或者函数 前&#xff0c;以标示变量或者函数的定义在别的文件中 &#xff0c;提示编译器遇到此变量和函数时在其他模块中寻找其定义 。此外extern也可用来进行链接指定。 也就是说extern有两个作用&#xff0c;第一个,当它与"C&…

关于WPF的ComboBox中Items太多而导致加载过慢的问题

【WFP疑难】关于WPF的ComboBox中Items太多而导致加载过慢的问题 周银辉我的一个同事在加载字体列表时遇到了一个让人崩溃的问题&#xff1a;由于系统字体可能较多&#xff08;可能有好几百项&#xff09;&#xff0c;导致使…

什么是3G通信

现在“3G通信”快要成为人们嘴上的口头禅了&#xff0c;那么您知道到底什么是3G通信吗&#xff1f;所谓3G&#xff0c;其实它的全称为3rd Generation&#xff0c;中文含义就是指第三代数字通信。1995年问世的第一代数字手机只能进行语音通话&#xff1b;而1996到1997年出现的第…

springMVC入门截图

mvc在bs系统下的应用 ---------------------------------------------------- 在web.xml中配置前端控制器&#xff08;系统提供的一个servlet类 只需配置即可 无需程序员开发 &#xff09; -------------------------------------------------------------- ----------------…

Linux环境下的网络编程

本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法&#xff0c;并举了具体代 码实例。要理解本文所谈的技术问题需要读者具有一定C语言的编程经验和TCP/IP方面的基本知识。要实习本文的示例&am…

WEBSHELL恶意代码批量提取清除工具

场景 使用D盾扫描到WEBSHELL后可以导出有路径的文本文件。 最后手动去把WEBSHELL复制到桌面然后以文件路径命名&#xff0c;挨个删除。 D盾界面是这样的。 手动一个个找WEBSHELL并且改名效率太低&#xff0c;使用MFC写一个小工具方便去现场以后查WEBSHELL的工作。 技术思路 D盾…

判定两棵二叉树是否相似以及左右子树交换、层次编号

#include <iostream> using namespace std; #include <malloc.h> #include <stdio.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2#define MAX_TREE_SIZE 100//二叉树的最大结点数 typedef cha…

[Tracking] KCF + KalmanFilter目标跟踪

基于KCF和MobileNet V2以及KalmanFilter的摄像头监测系统 简介 这是一次作业。Tracking这一块落后Detection很多年了&#xff0c;一般认为Detection做好了&#xff0c;那么只要能够做的足够快&#xff0c;就能达到Tracking的效果了&#xff0c;实则不然&#xff0c;现在最快的我…

.net wap强制输出WML

强制输出WML:在web.config添加下面内容<system.web>下<browserCaps><result type"System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version1.0.5000.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a"/><use var"HTTP_USER_…

Tomcat在Linux上的安装与配置

1.安装好linux系统&#xff0c;下载适合的 Tomcat(jdk)下载JDK与Tomcatjdk 下载Tomcat 下载参考地址&#xff1a;jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmltomcat下载地址:http://tomcat.apache.org /download-70.cgi…

上机实践 1 初识 Java

实验 1 一个简单的 Java 应用程序 一、实验目的 掌握开发 Java 应用程序的 3 个步骤&#xff1a;编写源文件、编译源文件和运行应用程序。 二、实验要求 1. 参照教材中的指导&#xff0c;使用网络课程中提供的链接下载并安装 JKD 并配置环境变量。 2. 编写一个简单的 Java…

论COSPLAY / 谨以此文纪念我暂短的Cos生涯

COSPLAY是什么COSPLAY这一名词是是英文Costume Play&#xff08;服饰扮演&#xff09;的缩写&#xff0c;从事COSPLAY相关活动的人员一般被称为COSPLAYER。目前流行的COSPLAY活动内容主要集中于通过服装、道具、饰品等扮演动漫作品中的人物角色&#xff0c;而从宽泛的意义上来说…

python 3下对stm32串口数据做解析

1、最近有个想做一个传感器数据实时显示的上位机&#xff0c;常规的数据打印太频繁了&#xff0c;无法直观的看出数据的变化。 python下的上位机实现起来简单一点&#xff0c;网上找了一些python界面Tkinter相关资料和python串口的demo.测试实现了简单的数据显示。 Mark 一下问…

《深入理解计算机系统》第八章——异常控制流知识点总结

课本习题&#xff1a; 8.11 #include <unistd.h> #include <stdio.h>int main(){int i;for(i0;i<2;i) fork();printf("hello\n");exit(0);}/** Result:* hello* hello* hello* hello*/ 8.12 #include <stdio.h> #include <unistd.h>vo…

vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题

今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1设置为启动项,谁知道问题出来了:因为两个aspx文件都是指向同一个CS文件&#xff0c;从他们的H…

8.29 对象?数组?

今天发现我的filter函数有问题&#xff0c;翻不了页&#xff0c;一直报错&#xff1a; 这是一个封装好的Array原型扩展函数。 /* Array 原型方法扩展 */(function() {$.extend(Array.prototype, {// 添加内容&#xff0c;比push多一个检查相同内容部分add: function(item) {if …

Nginx的作用

1、Nginx简介&#xff1a; 2、简介&#xff1a; Nginx是一个高性能的HTTP和反向代理服务器。 支持的操作系统众多&#xff0c;windows、linux、MacOSX 可实现负载均衡 Rewrite功能强大 电商架构大部分都采用NginxTomcat的架构 3、命令行使用&#xff1a; 三个命令&#xff1a;(…

(转)TabContainer要实现服务器端回传

TabContainer要实现服务器端回传,出来在后台实现 OnActiveTabChanged 事件外, 还需要在前台实现 OnClientActiveTabChanged 事件&#xff0c;这是关键。 <asp:UpdatePanel ID"UpdatePanel1"runat"server"ChildrenAsTriggers"true"><con…

python 获取脚本所在目录

pythonsys.path__file__abspathrealpath 平时写python经常会想获得脚本所在的目录&#xff0c;例如有个文件跟脚本文件放在一个相对的目录位置&#xff0c;那就可以通过脚本文件的目录找到对应的文件&#xff0c;即使以后脚本文件移到其他地方&#xff0c;脚本也基本不需要改动…

《深入理解计算机系统》第十章——系统级I/0

目录 10.1Unix I/O 10.2文件 10.3打开和关闭文件 10.4读和写文件 10.5用RIO包建壮地读写 10.6读取文件元数据 10.7读取目录内容 10.8共享文件 10.9 I/O重定向 10.10 标准I/O 10.1Unix I/O 在Linux中&#xff0c;一切皆为文件。 文件I/O函数-------打开文件、读文件…

终于完成了“微软”化

整整忙活了一个下午&#xff0c;基本上我的笔记本完成了可怕的“微软”化进程&#xff01;是的&#xff0c;当我完成FOXMAIL中邮件向OUTLOOK2007的迁移后&#xff0c;在办公层面&#xff0c;已经完成“微软”化了。其实真的不想这样&#xff0c;但是想MS在独霸桌面后&#xff0…

C#创建Windows服务

利用VS.NET创建C# Windows服务在很多应用中需要做windows服务来操作数据库等操作&#xff0c;比如 &#xff08;1&#xff09;一些非常慢的数据库操作&#xff0c;不想一次性去做&#xff0c;想慢慢的通过服务定时去做&#xff0c;比如定时为数据库备份等 &#xff08;2&#x…

《深入理解计算机系统》第七章——链接知识点总结

目录 7.1编译器驱动程序 7.2静态链接 7.3目标文件 7.4可重定位目标文件 7.5符号和符号表 7.6符号解析 • 静态库(.a archive files) 7.1编译器驱动程序 7.2静态链接 7.3目标文件 7.4可重定位目标文件 使用readelf -S查看hello.o 一个典型的ELF可重定位目标文件包含以下…

排序算法之直接插入排序

1、基本思想&#xff1a; 已知待排序列r[1...n],先将序列中的第一个记录看成是一个有序的子序列&#xff0c;然后从第二个记录起逐个进行插入&#xff0c;直至整个序列变成关键字非递减有序序列为止。 具体操作如下&#xff1a; &#xff08;1&#xff09;查找出r[i]在有序序列…