首页 > 代码库 > 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.如何构建一个图-----邻接矩阵