zoukankan      html  css  js  c++  java
  • 向图中增加结点

    向图中增加结点

      我们前面说过采用邻接矩阵来存储图,那么向图中增加结点其实只需要改变顶点数目,以及在邻接矩阵中增加点与点,点与边的关系即可。

    先看增加结点的函数

      就是向函数中传入结点,判断图如果未满就将其存入存放结点的数组,然后给节点数目加一。

        //向图中增加顶点
        bool addNode(Node* pNode)
        {
    	if (pNode == NULL)
    		return false;
    	if (m_iNodeCount >= m_iCapacity)
    	{
    		cout << "图已满!";
    		return false;
    	}
    	//加到顶点数组
    	m_pNodeArray[m_iNodeCount].m_cdata = pNode->m_cdata;
    	m_iNodeCount++;		//数量加1
    	return true;
        }
    

      但是这只是形式上的增加了结点,并没有真正反映到图中的对应关系,下面我们通过改变邻接矩阵来反映到图中的对应关系。

    改变邻接矩阵

      向函数中传入:要插入的结点在存储结点的数组中的下标以及和与这个结点相连的结点的下标,val默认为1.

    先是无向图的:

        //无向图的邻接矩阵赋值,把两个顶点连在一起,val为1时是连在一起,0是表示没连在一起
        bool setValueToMatrixForUndirectedGraph(int row, int col, int val)
        {
    	if (row < 0 || row >= m_iCapacity || col < 0 || col >= m_iCapacity)
    		return false;
    	m_pMatrix[row * m_iCapacity + col] = val;
    	m_pMatrix[col * m_iCapacity + row] = val;
    	return true;
        }
    

    再是有向图的

        //有向图的邻接矩阵赋值,把两个顶点连在一起,val为1时是连在一起,0是表示没连在一起
        bool setValueToMatrixForDirectedGrap(int row, int col, int val)
        {
    	if (row < 0 || row >= m_iCapacity || col < 0 || col >= m_iCapacity)
    		return false;
    	m_pMatrix[row * m_iCapacity + col] = val;
    	return true;
        }
    
  • 相关阅读:
    Oracle OCP提纲
    Oracle redo 日志损坏的几种情况下的恢复
    Oracle 归档开启切换和归档日志删除(单实例和RAC)
    MySQL mysqldump备份与恢复
    Oracle 卸载
    MySQL脚本自动安装mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
    Oracle session出现大量的inactive
    Oracle 备份与恢复基础
    NuGet 下载dll
    Azure Service Bus
  • 原文地址:https://www.cnblogs.com/vfdxvffd/p/11694278.html
Copyright © 2011-2022 走看看