graph.h

来自「实现了图的搜索算法」· C头文件 代码 · 共 62 行

H
62
字号
#ifndef _GRAPH_H
#define _GRAPH_H

#include "node.h"
//定义图结构
class Graph{

//METHOD & IMPLEMENTATION
public:
	Graph();
//////////////////////////////////////////////////////////////////////////
	//图的一些基本操作
	void clear();
	void save(FILE* file);
	void load(FILE* file);

	void drawArrow(CDC* pdc, int* coor1, int* coor2, COLORREF color, int edgeW);
	void display(CDC* pdc, int left, int top, int width, int height, int row, int column, 
					COLORREF colorV, COLORREF colorE, int edgeW, int mode);
	

	BOOL isNewVertex(int* coor);
	BOOL isNewEdge(int* coor1, int* coor2);
	int getVertexID(int *coor);//根据坐标得到顶点节点的ID

	void insertVertex(int *coor);//在图中插入新的节点
	void insertEdge(int *coor1, int* coor2);//在图中插入新的边

	void deleteVertex(int* coor);
	void deleteEdge(int* coor1, int* coor2);
private:
	void deleteVertex(int index);	
	void deleteEdge(int id1, int id2);

	void insertOpen(int vnode);
	void updateOpen();

	float A_star_h(int n, int end);//A*算法中的启发函数
//VARIABLE
public:
	VertexContainer m_vertexs;
	int m_nVertexNum;
	int m_nEdgeNum;

//////////////////////////////////////////////////////////////////////////
	//图的搜索算法
private:
	void clearVertexFlag();
public:
	BOOL DFS(int start, int end, Graph& tree);
	BOOL BFS(int start, int end, Graph& tree);
	BOOL Dijkstra(int start, int end, Graph& tree);
	BOOL A_star(int start, int end, Graph& tree);

	BOOL DFS(int* coor1, int* coor2, Graph& tree);//深度优先搜索算法
	BOOL BFS(int* coor1, int* coor2, Graph& tree);//广度优先搜索算法

	INT_DEQUE m_open;//开表
	INT_DEQUE m_close;//毕表
};

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?