首页 > 代码库 > 1.如何构建一个图-----邻接矩阵
1.如何构建一个图-----邻接矩阵
#include<iostream>using namespace std;#define UNVISTITED 0 //表示没有被访问过#define VISITED 1 //表示被访问过//图类class Graph {private: int numVertex, numEdge;//点的数目和边的数目 int **matrix;//邻接矩阵 int *mark;public: //构造函数 Graph(int numVert) { Init(numVert); } //析构函数 ~Graph() { delete[]mark; for (int i = 0; i < numVertex; i++) { delete[]matrix[i]; } delete[]matrix; } //初始化 void Init(int n) { int i; numVertex = n; numEdge = 0; mark = new int[numVertex]; matrix = new int*[numVertex]; for (i = 0; i < numVertex; i++) { mark[i] = UNVISTITED; } for (i = 0; i < numVertex; i++) { matrix[i] = new int[numVertex]; } for (i = 0; i < numVertex; i++) { for (int j = 0; j < numVertex; j++) { matrix[i][j] = 0; } } } //返回点的数目 int n() { return numVertex; } //返回边的数目 int e() { return numEdge; } //返回点V的第一个邻居 int first(int v){ for (int i = 0; i < n(); i++) { if (matrix[v][i] != 0) { return i; } } return -1; } //返回W后的第一个邻居 int next(int v, int w) { for (int i = w + 1; i < n(); i++) { if (matrix[v][i] != 0) { return i; } } return -1; } //设置v1与v2之间有边,赋值wt void setEdge(int v1, int v2, int wt) { if (matrix[v1][v2] == 0) { matrix[v1][v2] = wt; numEdge++; } } //删除v1和v2之间的边 void deleteEdge(int v1, int v2) { if (matrix[v1][v2] == 1) { matrix[v1][v2] = 0; numEdge--; } }};int main() {}
1.如何构建一个图-----邻接矩阵
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。