无向图相关算法基础(c++实现)

前言

       在《无向图相关算法基础(java实现)》的博文中,用java实现了无向图的基础算法,本文通过c++实现。
       前文已经将无向图基础算法的概念描述的很清楚,本文不再累述,直接上代码。

代码

       本文涉及到的类如下:

  • Undigraph.h 无向图类,用于无向图的创建。
    Undigraph.cpp
  • BreadthFirstSearch.h 广度优先类,提供广度优先算法及两点间最短路径算法。
    BreadthFirstSearch.cpp
  • TestMain.cpp 主函数,用于测试。

       以上类,在VS2008开发环境测试通过,具体代码如下:
       Undigraph.h:

#ifndef Undigraph_H
#define Undigraph_H

/*-------------------------------------------------------------------------------------------------------------------------
程序名称:Undigraph
2016年12月 
描述:创建无向图邻接链表数据结构
//------------------------------------------------------------------------------------------------------------------------*/

/*------------------------------------------------------【头文件】---------------------------------------------------------
描述:包含程序所依赖的头文件
//------------------------------------------------------------------------------------------------------------------------*/
#include <list> 
using namespace std;
/*------------------------------------------------------【类声明】---------------------------------------------------------
描述:无向图邻接链表类,用于创建无向图邻接链表数据结构
//------------------------------------------------------------------------------------------------------------------------*/
class Undigraph
{
    private: 
        int verticals;//顶点个数
        int edges;//边的个数
        list<int> *AdjacencyGraph;//指向邻接链表的指针
    public:
        /**/
        Undigraph(int vertical);//构建函数,根据参数“vertical”构建邻接链表,类型为list<int>[vertical],vertical为顶点个数,此时list<int>都为空,调用AddEdge()函数添加边后,完成整个邻接链表的创建。
        int GetVerticals();//返回顶点个数
        int GetEdges();//返回边个数
        void AddEdge(int verticalStart,int verticalEnd);//根据参数“verticalStart”、“verticalEnd”,在无向图中录入边数据,完成无向图的邻接链表数据结构。
        list<int>* GetAdjacencyGraph(int vetical);//根据参数"vetical"返回该顶点的邻接表
        void PrintGraph();//打印该无向图
};

#endif

Undigraph.cpp:

#include "Undigraph.h" 

/*------------------------------------------------------【Undigraph()构造函数】---------------------------------------------
描述:根据参数“vertical”,创建邻接链表
参数:1:int vertical(图的顶点个数)
其它:执行该函数后,构建的数据结构如下:
      0
      1
      2
      3
      4
      5
      6
//-------------------------------------------------------------------------------------------------------------------------*/
Undigraph::Undigraph(int vertical)
{
    this->verticals = vertical;
    this->edges = 0;
    AdjacencyGraph = new list<int>[this->verticals];

}

/*------------------------------------------------------【GetVerticals() 函数】---------------------------------------------
描述:返回图的顶点个数
参数:
返回值:图的顶点个数
//-------------------------------------------------------------------------------------------------------------------------*/
int Undigraph::GetVerticals()
{
    return verticals;
}
/*--------------------------------
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值