zoukankan      html  css  js  c++  java
  • 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() {
    }
  • 相关阅读:
    谷歌火狐浏览器限制的端口
    Web Api 内部数据思考 和 利用http缓存优化 Api
    Web Api 端点设计 与 Oauth
    FI-FBV0
    Others-SAP hybris 介绍
    ABAP-表修改日志存储
    TR-银行通信相关文档
    ABAP-Eclipse ADT中创建ABAP CDS视图
    TR-业务流程图
    FPM-OVP增强实例-银行账户
  • 原文地址:https://www.cnblogs.com/caimuqing/p/5845641.html
Copyright © 2011-2022 走看看