邻接多重表存储无向图以及有关操作(三)

2014-11-24 03:13:35 · 作者: · 浏览: 15
>>v1>>v2;

if(G.Delete_Arc(v1,v2))

{

cout<<"删除成功"<

G.Display();

cout<<"删除后深度优先遍历序列为:";

G.DFS_Traverse();

cout<<"删除后广度优先遍历序列为:";

G.BFS_Traverse();

}

return 0;

}

测试结果:

输入定点数目和弧的数目:6 8

输入每个顶点的名称:v1 v2 v3 v4 v5 v6

输入边的两个顶点:v1 v2

输入边的两个顶点:v1 v3

输入边的两个顶点:v1 v5

输入边的两个顶点:v2 v5

输入边的两个顶点:v3 v4

输入边的两个顶点:v3 v1

该边已存在,本图不支持存在平行边

重新输入边的两个顶点:v2 v1

该边已存在,本图不支持存在平行边

重新输入边的两个顶点:v3 v6

输入边的两个顶点:v4 v2

输入边的两个顶点:v5 v4

无向图构造完成

输入顶点名称,将输出其相邻顶点:v5

顶点v5 的邻接顶点为:v4 v2 v1

邻接多重表结构:

顶点为:v1 v2 v3 v4 v5 v6

总共有8条边

v1--v5

v1--v3

v1--v2

v2--v4

v2--v5

v3--v6

v3--v4

v4--v5

深度优先遍历序列:v1 v5 v4 v2 v3 v6

广度优先遍历序列:v1 v5 v3 v2 v4 v6

输入你要插入的新的边的两个顶点的名称:v5 v6

插入成功

顶点为:v1 v2 v3 v4 v5 v6

总共有9条边

v1--v5

v1--v3

v1--v2

v2--v4

v2--v5

v3--v6

v3--v4

v4--v5

v5--v6

插入后深度优先遍历序列为:v1 v5 v6 v3 v4 v2

插入后广度优先遍历序列为:v1 v5 v3 v2 v6 v4

输入你要删除的边的另个顶点的名称:v1 v2

删除成功

顶点为:v1 v2 v3 v4 v5 v6

总共有8条边

v1--v5

v1--v3

v2--v4

v2--v5

v3--v6

v3--v4

v4--v5

v5--v6

删除后深度优先遍历序列为:v1 v5 v6 v3 v4 v2

删除后广度优先遍历序列为:v1 v5 v3 v6 v4 v2

Press any key to continue

初始生成的无向图如下所示:

\

经过插入删除后生成的图就不画出来了 大家一看就知道了

写完代码 完善和debug的过程很艰辛 有时很恶心 但是自己觉得还满意 还不错后,就会觉得很爽啦 所以多自己动手写 是很好的锻炼

作者 Kay_Sprint