圖的簡單實現

作者: Phinecos(洞庭散人)  來源: 博客園  發布時間: 2008-08-16 22:25  閱讀: 766 次  推薦: 0   原文鏈接   [收藏]  
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;
}
0
0
 
標簽:算法 c++
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()