资源简介
c++实现图最短路径,给出了具体算法,代码易于理解,能够快速掌握
代码片段和文件信息
#include “CoreGraph.h“
void CoreGraph::initName()
{
nameArray[0] = “乌鲁木齐“;
nameArray[1] = “拉萨“;
nameArray[2] = “西宁“;
nameArray[3] = “成都“;
nameArray[4] = “西安“;
nameArray[5] = “昆明“;
nameArray[6] = “长沙“;
nameArray[7] = “广州“;
nameArray[8] = “台湾“;
nameArray[9] = “济南“;
nameArray[10] = “北京“;
nameArray[11] = “哈尔滨“;
}
void CoreGraph::initWidget()
{
//乌鲁木齐
int arr0[12] = { 0 1587 1450 -1 -1 -1 -1 -1 -1 -1 -1 -1 };
memcpy(&widgetArray[0][0] arr0 sizeof(int) * 12);
//拉萨
int arr1[12] = { 1587 0 1258 1228 -1 -1 -1 -1 -1 -1 -1 -1 };
memcpy(&widgetArray[1][0] arr1 sizeof(int) * 12);
//西宁
int arr2[12] = {1450 1258 0 703 703 -1 -1 -1 -1 -1 1330 -1};
memcpy(&widgetArray[2][0] arr2 sizeof(int) * 12);
//成都
int arr3[12] = {-1 1258 703 0 635 631 890 -1 -1 -1 -1 -1};
memcpy(&widgetArray[3][0] arr3 sizeof(int) * 12);
//西安
int arr4[12] = {-1 -1 703 635 0 -1 778 -1 -1 -1 858 -1};
memcpy(&widgetArray[4][0] arr4 sizeof(int) * 12);
//昆明
int arr5[12] = {-1 -1 -1 631 -1 0 1087 1070 -1 -1 -1 -1};
memcpy(&widgetArray[5][0] arr5 sizeof(int) * 12);
//长沙
int arr6[12] = { -1 -1 -1 890 778 1087 0 571 -1 996 -1 -1 };
memcpy(&widgetArray[6][0] arr6 sizeof(int) * 12);
//广州
int arr7[12] = {-1 -1 -1 -1 -1 1070 571 0 858 -1 -1 -1};
memcpy(&widgetArray[7][0] arr7 sizeof(int) * 12);
//台湾
int arr8[12] = {-1 -1 -1 -1 -1 -1 -1 858 0 -1 -1 -1};
memcpy(&widgetArray[8][0] arr8 sizeof(int) * 12);
//济南
int arr9[12] = { -1 -1 -1 -1 803 -1 996 -1 -1 0 375 -1 };
memcpy(&widgetArray[9][0] arr9 sizeof(int) * 12);
//北京
int arr10[12] = { -1 -1 1330 -1 858 -1 -1 -1 -1 375 0 1060 };
memcpy(&widgetArray[10][0] arr10 sizeof(int) * 12);
//哈尔滨
int arr11[12] = { -1 -1 -1 -1 -1 -1-1 -1-1 -1 1060 0};
memcpy(&widgetArray[11][0] arr11 sizeof(int) * 12);
}
CoreGraph::CoreGraph()
{
initName();
initWidget();
parent = new char[12];
memset(parent -1 sizeof(char) * 12);
}
CoreGraph::~CoreGraph()
{
delete[] parent;
}
char * CoreGraph::doSearch(string _src string _dst)
{
int src = -1 dst = -1;
//找到目标
for (int i = 0; i < 12; i++)
{
if (nameArray[i] == _src)
{
src = i;
}
else if (nameArray[i] == _dst)
{
dst = i;
}
}
if (src == -1 || dst == -1 || src > 11 || dst > 11)
{
return NULL;
}
//==================================================初始工作
priority_queue que1;//用于交换的优先队列
priority_queue que2;
int currentQueue = 1;//记录当前使用哪一个queue
priority_queue * que = &que1;
int totalWidget[12];
//memcpy(totalWidget &(this->widgetArray[src][0]) 12*sizeof(int));
memset(totalWidget -1 sizeof(int) * 12);
totalWidget[src] = 0;
//char parent[12] = { 0 };//记录所走结点的前一个结点
parent[src] = -1;//源结点
char record[12] = { 0 }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5264 2016-12-19 23:30 VS\CoreGraph.cpp
文件 769 2016-12-19 21:03 VS\CoreGraph.h
文件 934 2016-12-20 00:01 VS\main.cpp
目录 0 2016-12-30 11:44 VS
----------- --------- ---------- ----- ----
6967 4
评论
共有 条评论