79 lines
No EOL
2 KiB
C++
79 lines
No EOL
2 KiB
C++
#include "graph.hpp"
|
|
#include <iostream>
|
|
#include <stdio.h>
|
|
|
|
int main()
|
|
{
|
|
// typedef struct data
|
|
// {
|
|
// int id;
|
|
// std::string name;
|
|
// }data;
|
|
graphVertex<int, std::string> gv;
|
|
int op, id1, id2, w;
|
|
std::string name;
|
|
while (1)
|
|
{
|
|
printf("选择操作:1添加/覆盖节点2添加边3删除节点4删除边5显示图6广度优先遍历\n");
|
|
scanf("%d", &op);
|
|
switch (op)
|
|
{
|
|
case 1:
|
|
printf("分别输入序号 节点名:");
|
|
std::cin >> id1 >> name;
|
|
printf("插入到ID位%d的位置\n", gv.insect(id1, name));
|
|
break;
|
|
case 2:
|
|
printf("分别输入起始节点序号 到达节点序号 边权重:");
|
|
std::cin >> id1 >> id2 >> w;
|
|
if (id1 == id2)
|
|
printf("失败\n");
|
|
switch (gv.link(id1, id2, w))
|
|
{
|
|
case 0:
|
|
printf("成功\n");
|
|
break;
|
|
case -1:
|
|
printf("顶点不存在\n");
|
|
break;
|
|
case -2:
|
|
printf("边已经存在\n");
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
printf("输入节点序号:");
|
|
std::cin >> id1;
|
|
gv.remove(id1);
|
|
break;
|
|
case 4:
|
|
printf("分别输入起始节点序号 到达节点序号:");
|
|
std::cin >> id1 >> id2;
|
|
switch (gv.unlink(id1, id2))
|
|
{
|
|
case 0:
|
|
printf("成功\n");
|
|
break;
|
|
case -1:
|
|
printf("顶点不存在\n");
|
|
break;
|
|
case -2:
|
|
printf("边不存在\n");
|
|
break;
|
|
}
|
|
break;
|
|
case 5:
|
|
gv.display();
|
|
break;
|
|
case 6:
|
|
printf("输入起始节点序号:");
|
|
std::cin >> id1;
|
|
gv.BFS(id1);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |