⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphmain.cpp

📁 数据结构清华大学出版社出版 有书上例子的源代码
💻 CPP
字号:
#include <iostream>
#include <string>                   //引入标准库中的头文件
#include "graph.cpp"                //引用graph.cpp文件
using namespace std;

int main(int argc, char* argv[])
{
	int i;
   	int choose=1;                      //控制
    int which;                         //功能选择变量	
	string name;                       //插入顶点的值	                                                          
    string vname[4]={"we","wo","er","tt"};  //初始化各顶点
    int pos1;                           //顶点
	int pos2;                           //顶点
	int m;                                                   
	MGraph<string> g(vname,4,0);        //调用Graph程序
   while ( choose==1 )                  //控制
	{
	  cout << "需要输出顶点信息请按0" << "\n";		   //输入所要进行的操作的序号
	  cout << "需要输出任意一个顶点信息请按1" << "\n";
      cout << "需要边的信息输出请按2" << "\n";
      cout << "需要删除请按3" << "\n";
      cout << "需要插入请按4" << "\n";	  
	  cout << "需要删除某条边请按5" << "\n";
	  cout << "需要插入某条边请按6" << "\n";
	  cout << "需要深度优先遍历请按7" << "\n";
	  cout << "需要广度优先遍历请按8" << "\n";
	  cout << "需要退出请按10" << "\n";
      cin >> which;
      switch( which )                  //功能选择
	  {
         
	   case 0:                   //输出图的各顶点的值
		     g.PutVex();                                
			
		    break;      
	   
	   case 1:                   //输出图的任意顶点的值
		  try
		  {
			 int i;
			 cout<<"请输入顶点:"<<"\n";
		     cin>>i;
			 g.GetVex(i,vname);				              
                        
		  }
		  catch(char*)
		  {
			 cout<<"输出不正确!"<<endl;
		  }
			
		    break;
	  
	   case 2:                       //输出图中的边	     
		    cout<<"所有的边的信息为:"<<"\n";
		  try
		  {
				g.InsertArc(0,1,23);   //插入边
	            g.InsertArc(1,2,34);
	            g.InsertArc(2,3,12);           
		  }
		  catch(char*)
		  {
			  cout<<"输出不正确!"<<endl;
		  }            
		    break;                

       case 3:                        //删除hh顶点
  	       int hh ;
		   cout<<"请输入要删除的顶点"<<"\n";
	       cin>>hh;
	       try
		   {
			  g.DeleteVex(hh);                 
		   }
		   catch(char*)
		   {
		      cout<<"删除失败!"<<endl;
		   }
			break;

       case 4:                        //在nn位置插入值为name的顶点
	      int nn ;
		  cout<<"请输入要插入的顶点位置及名称"<<"\n";
	      cin>>nn>>name;			   
	      try
		  {
			  g.InsertVex(nn,name); 
		  }
		  catch(char*)
		  {
			  cout<<"插入失败!"<<endl;
		  }
			break;

       case 5:                      //删除两顶点之间的路径         
	      cout<<"请输入两顶点:"<<"\n";
		  cin>>pos1>>pos2;
		  try
		  {
			 g.DeleteArc(pos1,pos2); 
		  }
		  catch(char*)
		  {
		     cout<<"插入失败!"<<endl;
		  }
          
	        break;

       case 6:                   //插入一条边         
	      cout<<"请输入两顶点:"<<"\n";
		  cin>>pos1>>pos2;
		  cout<<"请输入路径:"<<"\n";
		  cin>>m;
		  try
		  {
			 g.InsertArc(pos1,pos2,m);
		  }
		  catch(char*)
		  {
			 cout<<"插入失败!"<<endl;
		  }
          
	        break;

       case 7:                  //深度遍历
		  cout<<"请输入顶点:"<<"\n";
		  for (i=0; i<MaxSize; i++)                                                   
			 visited[i] = 0;
		  int mm;
		  cin>>mm;
		  try
		  {
		     g.DFSTraverse(mm);
		  }
		  catch(char*)
		  {
		     cout<<"输入失败!"<<endl;
		  }
              
		    break;

       case 8:                  //广度遍历
		  cout<<"请输入顶点:"<<"\n";		  
		  int visited2[MaxSize];
		  for (i=0; i<MaxSize; i++) 
		      visited2[i]=0;
			 int mr;
		     cin>>mr;		  
		  try
		  {
			 g.BFSTraverse(mr);
		     cout<<"\n";
		  }
		  catch(char*)
		  {
		     cout<<"输入失败!"<<endl;
		  }              
		    break;
			
       case 10:              //退出
              choose=0;
            break;         
  }
 }		  
return 0;
 }
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -