Files

129 lines
2.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include<string>
#include "LinkQueue.h"
#include "ALGraph.h"
#include <iostream>
using namespace std;
void DispMenu()
{
cout<<"\n 操作选择:"<<endl;
cout<<" 1. 建立无向图"<<endl;
cout<<" 2. 返回顶点在图中的位置"<<endl;
cout<<" 3. 返回某位置的顶点的值"<<endl;
cout<<" 4. 修改顶点值"<<endl;
cout<<" 5. 增加顶点"<<endl;
cout<<" 6. 删除顶点"<<endl;
cout<<" 7. 增添边"<<endl;
cout<<" 8. 删除边"<<endl;
cout<<" 9. 从第一个顶点出发深度优先遍历图"<<endl;
cout<<"10. 从第一个顶点广度优先遍历图"<<endl;
cout<<"11. 显示图"<<endl;
cout<<" 0. 退出"<<endl;
}
bool visited[MAX_VEXNUM]={false};
void main()
{
char u,v;
int k;
ALGraph<char> G;
int choice;
do
{
DispMenu();
cin>>choice;
switch(choice)
{
case 1: // 创建无向图
CreateUDG(G);
cout<<endl;
cout<<"创建的图为:"<<endl;
DispG(G);
break;
case 2:
cout<<"请输入您要的所要查询位置的顶点: "; // 查询顶点位序
cin>>u;
k=LocateVex(G,u);
if(k!=-1)
cout<<"顶点"<<u<<"在图中的位置为: "<<k<<endl;
else
cout<<"顶点"<<u<<"不存在!"<<endl;
cout<<endl;
break;
case 3: // 按位序查询顶点
int index;
cout<<"请输入您要的所要查询顶点的位置: ";
cin>>index;
if(GetVex(G,index,v))
cout<<"位置为"<<index<<"的顶点为: "<<v<<endl;
else
cout<<""<<index<<"顶点不存在!"<<endl;
cout<<endl;
break;
case 4: // 修改顶点
cout<<"请输入要更改的顶点: ";
cin>>u;
cout<<"请输入更改后顶点: ";
cin>>v;
PutVex(G,u,v);
cout<<"顶点值修改后的图:"<<endl;
DispG(G);
cout<<endl;
break;
case 5: // 新增顶点
cout<<"请输入要增加的顶点: ";
cin>>v;
InsertVex(G,v);
cout<<"插入顶点和相应边后的图:"<<endl;
DispG(G);
cout<<endl;
break;
case 6: // 删除顶点
cout<<"请输入要删除的顶点的值:";
cin>>v;
DeleteVex(G,v);
cout<<"顶点删除后的图为:"<<endl;
DispG(G);
cout<<endl;
break;
case 7: // 新增边
cout<<"请输入要增添边的顶相邻两顶点";
cin>>u>>v;
InsertArc(G,u,v);
cout<<"插入边后的图:"<<endl;
DispG(G);
cout<<endl;
break;
case 8: // 删除边
cout<<"请输入删除的边相邻两顶点: ";
cin>>u>>v;
DeleteArc(G,u,v);
cout<<"边删除后的图:"<<endl;
DispG(G);
cout<<endl;
break;
case 9: // 深度优先遍历
cout<<"从第一个顶点出发深度优先遍历图的序列为: "<<endl;
DFSTraverse(G);
cout<<endl;
break;
case 10: // 广度优先遍历
cout<<"从第一个顶点出发广度优先遍历图的序列为: "<<endl;
BFSTraverse(G);
cout<<endl;
break;
case 11: // 显示图
DispG(G);
cout<<endl;
break;
case 0:
cout<<"结束运行Bye-Bye!"<<endl;
break;
default:
cout<<"无效选择,请重选!"<<endl;
break;
}//case
}while(choice!=0);
}//main