算法--图的转置

图的转置

算法性质

返回输入图的转置图

接口设计

template<typename Key, typename Value>
class ReverseGraph
{
public:
	typename typedef DataStruct::GraphStruct::Graph<Key, Value> InnerGraph;
	ReverseGraph(const InnerGraph& nGraph_);
	~ReverseGraph();

	InnerGraph Run();
private:
	ReverseGraph(const ReverseGraph& nGraph_) = default;
	ReverseGraph& operator=(const ReverseGraph& nGraph_) = default;

private:
	const InnerGraph& m_nGraph;
};

实现

构造

template<typename Key, typename Value>
ReverseGraph<Key, Value>::ReverseGraph(const InnerGraph& nGraph_)
	: m_nGraph(nGraph_)
{

}

析构

template<typename Key, typename Value>
ReverseGraph<Key, Value>::~ReverseGraph()
{

}

算法运行

template<typename Key, typename Value>
typename DataStruct::GraphStruct::Graph<Key, Value> ReverseGraph<Key, Value>::Run()
{
	InnerGraph _nGraph;
	DataStruct::Array::DynArray<typename InnerGraph::Node*> _arrNodes = m_nGraph.GetNodesArray();
	for (int _i = 0; _i < _arrNodes.GetSize(); _i++)
	{
		_nGraph.AddNode(_arrNodes[_i]->GetPair());
	}

	DataStruct::Array::DynArray<typename InnerGraph::Edge*> _arrEdges = m_nGraph.GetEdgesArray();
	for (int _i = 0; _i < _arrEdges.GetSize(); _i++)
	{
		_nGraph.AddEdge(_arrEdges[_i]->GetIdentity().Reverse());
	}

	return _nGraph;
}
原创文章 134 获赞 87 访问量 6万+

猜你喜欢

转载自blog.csdn.net/x13262608581/article/details/105753476