数据结构 - C++删除表中相同元素,循环问题在哪?
本文介绍了数据结构 - C++删除表中相同元素,循环问题在哪?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
template <class T>
bool SeqList<T>::Delsame(T x)
{
int i,j;
for(int j=1;j<n+1;j++)
{
if (elements[j-1]==x)
{
for (int i=j-1;i<n;i++)
{
elements[i]=elements[i+1];
}
n--;
}
}
return true;
}
删除表中相同元素部分的代码,当表中所需删除元素只有1个的时候,运行正常.当所需删除元素有多个的时候,运行结果正确,但是会提示.exe已停止工作,所以想知道循环问题在哪??
解决方案
n代表的是顺序表元素个数吗?如果是的话elements[i+1]
这一句会取到elements[n]
的,越界了。
BTW,第一个循环为什么直接j++?如果删除了一个元素,后面的往前移了,还进行j++,那岂不是会跳过一个元素。
你试一下两个相邻的相同元素能不能删除。
这篇关于数据结构 - C++删除表中相同元素,循环问题在哪?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文