visual c++ 6.0如何在项目中添加已写好的头文件_遗传算法可视化项目(3):创建图的数据结构...

本文介绍了作者在遗传算法可视化项目中的工作,包括使用邻接矩阵来描述物件间的关系,通过VS2017创建C++控制台应用,并编写头文件Graph.h来定义图的存储结构。作者还展示了如何读取文本文件中的经纬度数据,将其转化为图的节点,并初始化边,最后强调了全局变量的使用以便于与Python交互。
摘要由CSDN通过智能技术生成

昨天有点事停更了一天,非常抱歉!继续遗传算法可视化项目,之前文章没看的或者今天才关注的点历史消息或者这里:

遗传算法可视化项目(1):概述

遗传算法可视化项目(2):获取信息

好了,该进入今天的工作了,创建图的数据结构,图的定义(主要是二元组和三元组两种定义)和存储结构多了去了,这里也就不一一介绍了,我认为图的定义也就是用来描述物件与物件之间关系,我用的是邻接矩阵的存储结构,图的存储结构当然还有邻接表,十字链表……

先打开VS2017(开始菜单里面找),然后文件→新建→项目,然后点击visualC++ → Windows控制台应用程序,修改名称和项目路径,其余默认,点击确定等待片刻,等待完成之后在那个给你生成的.cpp文件(这个cpp文件以后用不到(因为最终要运行的是Python程序,而不是C程序),但是如果想要调试函数的可以在这里面的main函数里面调用)最上面写上#include<stdlib.h>然后在main函数里面写这两行代码:

system("pause");

return 0;

接着就是在右边的解决方案资源管理器中找到并右击头文件,添加→新建项,点击头文件,修改一下文件名,然后确定,我这里头文件就叫Graph.h了,Graph.h第一行应该会有一个#pragma once的预处理,表示让Graph.h只被编译一次,不会因为重复的包含而去重复的编译,不要删掉!在第二行开始写自己的代码。首先,把之前生成的那个文本文件(海南省所有镇的经纬度.txt)复制到现在的项目中,和Graph.h一个目录就行,然后用VS编写Graph.h。首先定义图的存储结构邻接矩阵,代码如下:

1afaf66be58b8cb20b78da8e47215bf7.png

#define ROW 106表示图中有106个结点(视自己情况而定,我以前在学校就爬出来106个点,然后回到家重新爬一次发现没有106个点,我也不清楚是为什么,具体怎么爬看之前的推送。这个不用管,那个文本文件(海南省所有镇的经纬度.txt)有多少行ROW就是多少),最后我还定义了一个Graph类型的全局变量,为什么要定义这个全局变量是因为和Python交互时使用,如果局部变量函数一结束就直接回收了,我以后还要把图的数据传给Python。定义完事之后就是把图创建出来了,定义函数如下(在函数上面需要加一些头文件和宏定义

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#define MAX 10

957c6eeccf1c3f98d0f0a7044b11cb43.png

首先是在create函数体里面定义变量并初始化,代码如下:

80d48528a568ca061efc3afbf6e57df9.png

然后就是打开文件(海南省所有镇的经纬度.txt),把文件内容读到内存中,以后方便处理,代码如下:

49ed3c74c21cf91ce4da48c7e08a2c9f.png

我在这里就是把文件内容存放到char*类型的str的变量中,然后就是字符串分割,代码如下:

df3752299060c3ed9b4e8a1be08197aa.png

这样就把str整个字符串分成了ROW行3列的char*类型的二维数组,二维数组是变量strArray,然后利用atof函数把经纬度从char*类型转变为double类型,存入图中,代码如下:

74bc6e544bb11c16d6edba1bc4f38b2e.png

节点已经初始化完毕,然后就是初始化边,代码如下:

de85325a26cfeb2a6ca4b1eae88ddef0.png

初始状态节点与节点并没有来连通,以后我会把最短路径连上,MAX是一个无穷大的数,我在这里定义成了10,为什么我会定义成10明天再说,今天差不多就到这里,最后不要忘了关闭文件释放资源!关闭文件释放资源的代码如下:

9cf27a8a5f1fc1da7850e813fe249347.png

目前为止,create函数讲完了,今天的内容——创建图讲完了我还会持续更新,文章最后附上项目地址:https://github.com/3480430977/DataVisualizationOfGA

最后欢迎大家扫码关注

a306e17d910a57ef06437215aeb3a5b4.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值