📄 adj_list.cpp
字号:
#include ".\adj_list.h"
#include <algorithm>
#include <crtdbg.h>
using namespace std;
static edge_vect g_vEmpty;
//static edge_it_pair
adj_list::adj_list(adj_list_type eType)
{
m_eType = eType;
}
adj_list::~adj_list(void)
{
}
bool adj_list::hasInEdge()
{
return (eInEdge_Only == m_eType) || (eInOutEdge == m_eType);
}
bool adj_list::hasOutEdge()
{
return (eOutEdge_Only == m_eType) || (eInOutEdge == m_eType);
}
size_t adj_list::get_vert_count()
{
if(hasInEdge())
{
return m_InEdgeMap.size()+1;
}
else
{
return m_OutEdgeMap.size()+1;
}
}
void adj_list::addEdge(const edge& eNew)
{
if(hasInEdge())
{
addEdge(m_InEdgeMap, eNew.m_iT, eNew);
}
if(hasOutEdge())
{
addEdge(m_OutEdgeMap, eNew.m_iS, eNew);
}
}
void adj_list::addEdge(edge_map& map1, NODE_ID_TYPE iNode, const edge& eNew)
{
edge_map_iterator it = map1.find(iNode);
if(it==map1.end())
{
edge_vect vectNew;
vectNew.push_back(eNew);
map1[iNode] = vectNew;
}
else
{
it->second.push_back(eNew);
}
}
edge_it_pair adj_list::in_edges(NODE_ID_TYPE nodeTarget)
{
edge_map_iterator it = m_InEdgeMap.find(nodeTarget);
if(it==m_InEdgeMap.end())
{
return make_pair(g_vEmpty.end(), g_vEmpty.end());
}
else
{
return make_pair(it->second.begin(), it->second.end());
}
}
edge_it_pair adj_list::out_edges(NODE_ID_TYPE nodeSource)
{
edge_map_iterator it = m_OutEdgeMap.find(nodeSource);
if(it==m_OutEdgeMap.end())
{
return make_pair(g_vEmpty.end(), g_vEmpty.end());
}
else
{
return make_pair(it->second.begin(), it->second.end());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -