1 #include<iostream> 2 3 #define Max 20 4 using namespace std; 5 6 class Vertex 7 { 8 public: 9 Vertex(char lab) {Label=lab;} 10 private: 11 char Label; 12 }; 13 14 15 class Graph 16 { 17 18 public: 19 Graph();//构造函数 20 ~Graph();//析构函数 21 void addVertex(char lab);//增加一个节点 22 void addEdge(int start,int end);//增加一条边,起点到终点 23 void printMatrix();//打印出矩阵 24 private: 25 Vertex* vertexList[Max]; //存放每个节点的指针的数组 26 int nVerts;//实际数量 27 int adjMat[Max][Max];//矩阵 28 }; 29 Graph::Graph() 30 { 31 32 nVerts=0; 33 for(int i=0;i<Max;i++) 34 for(int j=0;j<Max;j++) 35 adjMat[i][j]=0; 36 37 } 38 void Graph::addVertex(char lab) 39 { 40 41 vertexList[nVerts++]=new Vertex(lab);// 42 43 } 44 void Graph::addEdge(int start,int end) 45 { 46 adjMat[start][end]=adjMat[end][start]=1; 47 48 } 49 50 void Graph::printMatrix() 51 { 52 53 for(int i=0;i<nVerts;i++) 54 { 55 for(int j=0;j<nVerts;j++) 56 { 57 cout<<adjMat[i][j]<<" "; 58 } 59 cout<<endl; 60 } 61 } 62 63 Graph::~Graph() 64 { 65 66 for(int i=0;i<nVerts;i++) 67 { 68 delete vertexList[i]; 69 } 70 } 71 int main() 72 { 73 74 Graph g; 75 g.addVertex('A');//0 76 g.addVertex('B');//1 77 g.addVertex('C');//2 78 g.addVertex('D');//3 79 g.addVertex('E');//4 80 g.addEdge(0,1);//A-B 81 g.addEdge(1,4);//B-E 82 g.addEdge(2,4);//C-E 83 84 g.addEdge(0,3);//A-D 85 g.addEdge(3,0); 86 g.addEdge(3,4); 87 88 g.printMatrix(); 89 return 0; 90 }