删除顺序表中重复元素,并按照原序输出
程序员文章站
2024-03-20 13:29:40
...
问题描述:从顺序表中删除重复的元素,并使得剩余元素间的相对次序保持不变。
解决思路:
PS:将结果表归为一个新表,理解较为容易(接下来以旧表和新表相称)
①先定义新表的长度和迭代器(初始长度为1,迭代器置0,即将第一个数值归入新表)
②旧表迭代器置1(第二个值)
③旧表迭代器后移一位,新表迭代器归0
③旧表每向后移动一次迭代器,需遍历一次新表与该值进行比对
ⅰ、遍历完成新表未发现相等情况,则将该数值归入新表,新表长度加1
④若迭代器小于表长,回第二步
具体代码:
int num = 1; //新表的长度
if(size > 1) {
int nRank = 0; //新表的迭代器
//遍历旧表,比较数值
for(int oRank = 1; oRank < size ; oRank++) {
nRank = 0; //迭代器重置
//此处遍历新表,与旧表中的数据进行比对
while(nRank < num && a[nRank] != a[oRank])
nRank++;
//如果遍历整个新表都未发现相同数值,则表长加一,加入新值
if(nRank == num)
{
a[nRank] = a[oRank];
num = nRank+1;
}
}
}
return num; //返回新表长
测试结果:
上一篇: cookies
下一篇: 【NOIP模拟赛】小奇颓废赛 Day1
推荐阅读