资源简介
人工智能课设 罗马尼亚度假问题 MFC实现
代码片段和文件信息
#include “AdjMWGraph.h“
AdjMWGraph::AdjMWGraph(const int sz) : Vertices(sz)
//构造函数
{
for (int i = 0; i < sz; i++)
for (int j = 0; j < sz; j++)
{
if (i == j) Edge[i][j] = 0;
else Edge[i][j] = MaxWeight;
}
numOfEdges = 0;
}
string AdjMWGraph::GetValue(const int v)const
//取顶点v的数值
{
if (IsVertex(v) == 0)//判断序号v的合法性
{
// cout << “参数v越界出错!“ << endl;
exit(0);
}
return Vertices.GetData(v);
}
WT AdjMWGraph::GetWeight(const int v1 const int v2)const
//取起始顶点为v1、终止顶点为 v2的边的权值
{
if (IsVertex(v1) == 0 || IsVertex(v2) == 0)//判断序号v1和v2的合法性
{
// cout << “参数v1或v2越界出错!“ << endl;
exit(0);
}
return Edge[v1][v2];
}
//在图的邻接表中插入值为vertex的顶点。如果图中已经有顶点vertex,则图不变。
void AdjMWGraph::InsertVertex(const string &vertex)
//插入顶点vertex
{
if (IsVertex(vertex)<0)//判断是否图中已经有值为vertex的顶点,时间复杂度O(n)
Vertices.Insert(vertex Vertices.Size());//把顶点vertex插入到顺序表的当前表尾位置
}
/* 在图的邻接矩阵中插入一条边:
* 如果v1和v2有一个不是图中的顶点,则图不变;
* 如果v1和v2相等,则图不变。
* 如果图已经包含该边,则边的权值更改为新的权值。
* 如果图没有包含该边,则在带权有向图G中插入一条第v1个顶点指向第v2个顶点,权值为weight的有向边。
*/
void AdjMWGraph::InsertEdge(const int v1 const int v2 WT weight)
//插入一条起始顶点为v1、终止顶点为 v2、权值为weight的边
{
switch (IsEdge(v1 v2))//判断图中第v1个顶点到第v2个顶点的边的情况
{
case -2: //如果v1和v2有一个不是图中的顶点,则图不变;
break;
case -1: //如果v1和v2相等,则图不变。
break;
case 0: //如果边不存在,则边的数目加1,插入边
numOfEdges++;
case 1: //如果边存在,则修改权值
;
default:
Edge[v1][v2] = weight;
}
}
//在图的邻接表中删除第v个顶点以及与该顶点相关的所有边
//void AdjMWGraph::DeleteVertex(const int v)
//{
// int ij;
// if(IsVertex(v)==0)//判断序号v的合法性
// {
// cout<<“删除顶点时参数v越界出错!“< // exit(0);
// }
// //删除所有包含顶点v的边,并且相应地将边数减1
// for(i = 0; i < NumOfVertices(); i++)
// { for(j = 0; j < NumOfVertices(); j++)
// if((i == v || j == v) && i != j && Edge[i][j] > 0 &&Edge[i][j] < MaxWeight)
// numOfEdges--;
// }
// for( i=v; i // for( j=0; j // Edge[i][j]=Edge[i+1][j]; //删除所有第v个顶点出去的边
// for( i=0; i // for( j=v; j // Edge[i][j]=Edge[i][j+1]; //删除所有指向第v个顶点的边
// Vertices.Delete(v); //在顶点顺序表中删除第v个顶点
//}
/* 如果v1和v2有一个不是图中的顶点,则图不变;
* 如果v1和v2相等,则图不变;
* 如果不是图的边,则图不变;
* 如果是图的边,则在带权有向图G中删除第v1个顶点指向第v2个顶点的有向边。
*/
//void AdjMWGraph::DeleteEdge(const int v1 const int v2)
////删除一条起始顶点为v1、终止顶点为 v2的边
//{
// switch (IsEdge(v1v2))//判断图中第v1个顶点到第v2个顶点的边的情况
// {
// case -2: //如果v1和v2有一个不是图中的顶点,则图不变;
// break;
// case -1: //如果v1和v2相等,则图不变;
// break;
// case 0: //如果不是图的边,则图不变;
// break;
// case 1: //如果是图的边,则在带权有向图G中删除第v1个顶点指向第v2个顶点的有向边。
// {
// Edge[v1][v2] = MaxWeight;/*把该边的权值置为无穷大,即为删除该边*/
// numOfEdges--;
// }
// default:;
// }
//}
//返回第v个顶点的第一个邻接顶点。若存在返回该邻接顶点的下标序号,否则返回-1
int AdjMWGraph::GetFirstNeighbor(const int v)const
{
if (IsVertex(v) == 0)//判断序号v的合法性
{
// cout << “参数v越界出错!“ << endl;
exit(0);
}
/*寻找邻接矩阵v行中从最左开始第一个值非零且非无穷大的权值对应的顶点*/
for (int co
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16485 2016-11-29 00:52 罗马尼亚度假问题\RomanTest\AdjMWGraph.cpp
文件 3551 2016-11-29 00:52 罗马尼亚度假问题\RomanTest\AdjMWGraph.h
文件 4074 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\ReadMe.txt
....... 67777 2013-07-22 01:18 罗马尼亚度假问题\RomanTest\res\RomanTest.ico
文件 674 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\res\RomanTest.rc2
文件 5100 2016-11-28 14:07 罗马尼亚度假问题\RomanTest\resource.h
文件 111520 2016-11-30 00:41 罗马尼亚度假问题\RomanTest\RomanTest.aps
文件 2413 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\RomanTest.cpp
文件 475 2016-11-27 20:56 罗马尼亚度假问题\RomanTest\RomanTest.h
文件 15558 2016-11-30 00:41 罗马尼亚度假问题\RomanTest\RomanTest.rc
文件 6453 2016-11-27 22:38 罗马尼亚度假问题\RomanTest\RomanTest.vcxproj
文件 2434 2016-11-27 22:38 罗马尼亚度假问题\RomanTest\RomanTest.vcxproj.filters
文件 12184 2016-11-29 00:52 罗马尼亚度假问题\RomanTest\RomanTestDlg.cpp
文件 1540 2016-11-28 15:48 罗马尼亚度假问题\RomanTest\RomanTestDlg.h
文件 2074 2016-11-28 13:28 罗马尼亚度假问题\RomanTest\SeqList.h
文件 1498 2016-11-27 22:38 罗马尼亚度假问题\RomanTest\SeqQueue.h
文件 142 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\stdafx.cpp
文件 1578 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\stdafx.h
文件 234 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\targetver.h
文件 316 2016-11-30 23:42 罗马尼亚度假问题\RomanTest\启发函数.txt
文件 3816 2016-11-30 23:42 罗马尼亚度假问题\RomanTest\图数据.txt
文件 973 2016-11-27 09:46 罗马尼亚度假问题\RomanTest.sln
..A..H. 35840 2016-11-30 22:41 罗马尼亚度假问题\RomanTest.v12.suo
目录 0 2016-11-27 09:46 罗马尼亚度假问题\RomanTest\res
目录 0 2016-11-30 23:49 罗马尼亚度假问题\RomanTest
目录 0 2016-11-30 23:51 罗马尼亚度假问题
----------- --------- ---------- ----- ----
296709 26
评论
共有 条评论