鄰接矩陣建立無向圖
阿新 • • 發佈:2018-11-21
#include<iostream> using namespace std; const int MaxSize=10; class MGraph {public: MGraph(int n,int e){vertexNum=n;arcNum=e; for(int i=0;i<vertexNum;i++){cout<<"請輸入第"<<i<<"個頂點資料:";int x;cin>>x;vertex[i]=x;visited1[i]=0;visited2[i]=0;} for(int z=0;z<vertexNum;z++) for(int j=0;j<vertexNum;j++) arc[z][j]=0; for(int k=0;k<arcNum;k++) {int a,b;cout<<"請輸入邊"<<k<<"依附的兩個頂點:";cout<<"第一個頂點:";cin>>a;cout<<"第二個頂點:";cin>>b;arc[a][b]=1;arc[b][a]=1;}} void DFSTraverse(int v){cout<<vertex[v];visited1[v]=1; for(int j=0;j<vertexNum;j++)if(arc[v][j]==1&&visited1[j]==0)DFSTraverse(j);} void BFSTraverse(int v){int Q[MaxSize];int front,rear;front=rear=-1;cout<<vertex[v];visited2[v]=1;Q[++rear]=v; while(front!=rear){v=Q[++front];for(int j=0;j<vertexNum;j++) if(arc[v][j]==1&&visited2[j]==0){cout<<vertex[j];visited2[j]=1;Q[++rear]=j;}}} private: int vertex[MaxSize]; int arc[MaxSize][MaxSize]; int visited1[MaxSize];int visited2[MaxSize]; int vertexNum,arcNum; }; int main() {cout<<"頂點數:";int a;cin>>a; cout<<"邊數:";int b;cin>>b; MGraph M(a,b); cout<<"深度優先遍歷:";cout<<"選擇第一個訪問的頂點:";int top1;cin>>top1;M.DFSTraverse(top1);cout<<endl; cout<<"廣度優先遍歷:";cout<<"選擇第一個訪問的頂點:";int top2;cin>>top2;M.BFSTraverse(top2);cout<<endl; return 0;}