• 大小: 3KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2023-12-24
  • 语言: C/C++
  • 标签:

资源简介

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


评论

共有 条评论