C++ Exercises(十七)--图的简单实现

简介:
const int MAXSIZE = 50; //顶点最大数目

#include <vector>
using namespace std;

template<typename T>
class CGraph
{
public:
    CGraph(void);
    ~CGraph(void);
private:
    vector<T> vecNodes;//顶点列表
    int edge[MAXSIZE][MAXSIZE];//边表
    int numVertexs;//顶点数
    int numEdges;//边数
    bool visited[MAXSIZE];//用于图的遍历

    int FindVertex(const T& vertex,const vector<T> &lst);
    void ClearVisitFlag();
    vector<T>& GraphDepthFirstSearch(const T& beginVertex);//深度遍历图
    vector<T>& GraphBreadthFirstSearch();//广度遍历

public:
    bool GraphEmpty(void)const;
    bool GraphFull(void)const;
    int NumberOfVertices(void)const;//获取顶点数
    int NumberOfEdges(void)const;//获取边数
    int GetWeight(const T&vertex1,const T& vertex2);//获取指定两个顶点间的权值
    vector<T>& GetNeighbors(const T& vertex);//获取指定顶点的邻接顶点

    void CreateGraph();//创建图
    int GetVertexPos(const T& vertex);//获取指定顶点的位置

    int InsertVertex(const T& vertex);//插入顶点
    void InsertEdge(const T& vertex1,const T& vertex2,int weight);//插入边
    void DeleteVertex(const T& vertex);//删除顶点
    void DeleteEdge(const T& vertex1,const T& vertex2);//删除边

    //int MinimumPath(const T& sVertex,const T& desVertex);最短路径
    void DepthFirstSearch();//深度遍历图
    void BreadthFirstSearch();//广度遍历图
};

复制代码
 

图的实现代码
测试程序:

复制代码
#include "Graph.cpp"
#include <iostream>
using namespace std;


int main(int argc, char* argv[])
{

    CGraph<int> *graph1 = new CGraph<int>();
    graph1->CreateGraph();
    graph1->DepthFirstSearch();
    graph1->BreadthFirstSearch();
    system("pause");
    return 0;
}

复制代码




本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/07/23/1249996.html,如需转载请自行联系原作者
目录
相关文章
|
C++
C/C++ DLL 简单实现
C/C++ DLL 简单实现
84 0
|
7月前
|
存储 算法 C++
c++算法学习笔记 (8) 树与图部分
c++算法学习笔记 (8) 树与图部分
|
7月前
|
算法 C++ 开发者
【C/C++ 数据结构 】图顶点个数和边的关系
【C/C++ 数据结构 】图顶点个数和边的关系
225 0
|
7月前
|
安全 C++
c++ 无锁队列的简单实现
c++ 无锁队列的简单实现
281 0
|
数据可视化 C++
【影像配准】配准之棋盘网格图(镶嵌图像)(附有 C++ 代码)
【影像配准】配准之棋盘网格图(镶嵌图像)(附有 C++ 代码)
|
存储 C++ 容器
使用C++编写一个图的深度和广度优先遍历的代码
使用C++编写一个图的深度和广度优先遍历的代码
123 0
|
编译器 C++
C++ 类和对象(静态的static、友元、内部类、匿名对象、explicit)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏(二)
C++ 类和对象(静态的static、友元、内部类、匿名对象、explicit)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏(二)
|
编译器 C++
C++ 类和对象(静态的static、友元、内部类、匿名对象、explicit)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏(一)
C++ 类和对象(静态的static、友元、内部类、匿名对象、explicit)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏(一)
|
算法 容器
二维容器进行图的DFS搜索和BFS搜索-C++STL模板
二维容器进行图的DFS搜索和BFS搜索-C++STL模板
190 1
二维容器进行图的DFS搜索和BFS搜索-C++STL模板
|
存储 Java Linux
C++ 第八节&数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)
每一个关键码key,都有与之对应的值Value,即&lt;Key, Value&gt;的键值对。该种方式在现实生活中非常常见:比如英汉词典就是英文与中文的对应关系,通过英文可以快速找到与其对应的中文,英文单词与其对应的中文&lt;word, chinese&gt;就构成一种键值对;
228 0
C++ 第八节&数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)