请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

DenseGraph迭代器中index设为0

波波老师好,我将DenseGraph迭代器中index设为0和-1分别测试了两次发现结果其实没有变化。请问这是一个偶然想象还是,设置为0和-1都可以其实。

class adjIterator
	{
	public:
		adjIterator(denseGraph &graph, int v) :m_G(graph)
		{
			m_nnode = v;
			m_nindex = 0; //-1
		}
		int begin()
		{
			m_nindex = 0; //-1
			return next();
		}
		int next()
		{
			for (m_nindex++; m_nindex < m_G.getV(); m_nindex++)
			{
				if (m_G.m_vecg[m_nnode][m_nindex])
				{
					return m_nindex;
				}
			}
			return -1;
		}

正在回答

插入代码

1回答

初始需要是 -1。因为在 begin() 中会调用 next,在 next 中 m_nindex 会直接 ++。初始是 -1 才能保证 m_nindex 是从 0 开始查看的,否则将跳过 0,从 1 开始查看。


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕雪菜狗 #1
    感谢您的回复。在begin中调用next会直接++,这步计算我是注意到了的,我也明白您的意思的,只是从结果上我看没有变化,我觉得比较有意思。我在想想其中的原因。谢谢波波老师。
    回复 有任何疑惑可以回复我~ 2022-02-09 10:04:11
  • liuyubobobo 回复 提问者 慕雪菜狗 #2
    因为我不知道你具体的测试用例,所以我不肯定是什么原因。大概率是因为测试用例没有触及这个问题。(图的遍历过程中不需要查看某个点和 0 的联通情况。)
    回复 有任何疑惑可以回复我~ 2022-02-09 10:06:06
  • 提问者 慕雪菜狗 回复 liuyubobobo #3
    我的测试用例就是咱们课程中使用的两个testG1.txt和testG2.txt文件。对,应该是您说的不需要查看某个点和0的联通情况这个问题(其实还是问题没有触及),感谢波波老师啊。
    回复 有任何疑惑可以回复我~ 2022-02-09 11:39:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信