为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在深度优先遍历函数刚开始时就判断m_pNode[NodeIndex]是不是已经访问过会导致内存错误?

void CMap::DepthFirstTraversal(int NodeIndex)
{
	if (m_pNode[NodeIndex].m_bIsVisited == false)
	{
		cout << m_pNode[NodeIndex].m_iData << " ";
	}
	m_pNode[NodeIndex].m_bIsVisited = true;
	for (int i = 0; i <m_iCapacity;i++)
	{
		if (1==GetvalueOfMatrix(NodeIndex, i))
		{	
			
			
				DepthFirstTraversal(i);
			
			
		}
		
	}
	
}
上面这种写法就会导致内存错误
void CMap::DepthFirstTraversal(int NodeIndex)
{
	
	cout << m_pNode[NodeIndex].m_iData << " ";
	m_pNode[NodeIndex].m_bIsVisited = true;
	for (int i = 0; i <m_iCapacity;i++)
	{
		if (1==GetvalueOfMatrix(NodeIndex, i))
		{	
			
			if (m_pNode[i].m_bIsVisited == false)
			{
				DepthFirstTraversal(i);
			}
				
			
			
		}
		
	}
	
}
而这种写法就是正确的呢,按理来说,在递归前跟递归后判断是没啥区别的啊


正在回答

2 回答

朋友,实测你的代码没问题啊!

0 回复 有任何疑惑可以回复我~
#1

sodo0 提问者

哦,好吧,
2017-04-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么在深度优先遍历函数刚开始时就判断m_pNode[NodeIndex]是不是已经访问过会导致内存错误?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信