我想确定在用户输入的链接列表中哪些值和多少值是重复的。这是我写它的代码:在链接列表中标识重复值C++
int count;
int compare, compare2;
for (p = first; p != NULL; p = p->next){
compare = p->num;
for (j = first; j != NULL; j = j->next){
if (compare == j->num){
compare2 = j->num;
count++;
}
}
if (count > 1){
cout << "There are at least 2 identical values of: " << compare2 << " that repeat for: " << count << "times" << endl;
}
}
基本上它的想法是,我采取的第一个元素在第一循环,并将其与第二循环中的所有元素,如果有这样的情况算他们是相似的,然后打印结果 - 然后我拿下一个元素,等等。
但是,输出是所有元素,它也不能正确计数。我只是迷失在如何调整它。
我试过在两个循环中使用相同的p变量,因为它是我想要循环的同一个列表,但是一旦输入完成,那么.exe失败。
我看到了一些有关删除重复值的函数的例子,但比较部分通过while循环运行,我只是想知道 - 我在做这个错误?
怎样通过调试器一行一行地逐行执行代码,以获取实际出错的内容它? – 2014-10-28 17:26:26
你可以用'std :: map'而不是写一个O(n^2)循环来轻松做到这一点。 –
PaulMcKenzie
2014-10-28 17:27:29
您没有将'count'初始化为0. – PaulMcKenzie 2014-10-28 17:39:23