永发信息网

设计算法实现删除顺序表中多余重复元素。如:对于顺序表(1,2,3,1,3,4,3,5),利用C语言编程,谢了。

答案:3  悬赏:80  手机版
解决时间 2021-01-21 22:42
  • 提问者网友:听门外雪花风
  • 2021-01-21 07:30
设计算法实现删除顺序表中多余重复元素。如:对于顺序表(1,2,3,1,3,4,3,5),利用C语言编程,谢了。
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-01-21 08:28
for(i=0;ilast-1;i++)
{
for(j=i+1;jlast;j++)
{
if(a[i]==a[j])

{
这里找到相同的比如在第三个的3和第五个的3是相同的那么就第六个数字以及之后的向前移一位

}
}
}追问程序如何写?
全部回答
  • 1楼网友:街头电车
  • 2021-01-21 10:47
坐等答案,呵呵
  • 2楼网友:舊物识亽
  • 2021-01-21 09:29
先排序,然后对相邻的重复元素删除追问我知道,但是循环语句对元素的删除没办法实现。
for(i=0;ilast;i++)
{
for(j=i+1;jlast;j++)
{}
}
如何改进,谢谢!追答C确实很难实现……需要自己手动构造函数删除,而且容易在删除后的地方留下空白(就像砍完树后留下的树桩还会绊倒人一样)。
如果你会用vector就好办多了。C++的标准模版库最适合做这种事情了……
1.数据压入push_back()并排序.
vector vecInt;
int nTemp;
for(int i = 0;i < NUM;++i){
cin>>nTemp;
vecInt.pushback(nTemp);
}
sort(vecInt.begin(),vecInt.end());
2.调用unique算法将冗余元素移至容器末尾,并返回此时新容器的迭代器(你就当是指针好了)。此时剩下的元素会自动被排列在一段连续的空间里。
vector vecInt::iterator it = unique (vecInt.begin(),vecInt.end());
3.将容器末尾的冗余元素全部清除
vecInt.erase(it,vecInt.end());
更详细的说明参看陈良乔著《我的第一本C++书》第284页:
“10.5.2 删除容器中的冗余元素”
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯