首页 新闻 搜索 专区 学院

数据结构的题目

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-17 11:49

有序递增顺序表中相同元素的删除算法怎么写

向死而生的主页 向死而生 | 初学一级 | 园豆:190
提问于:2012-03-20 14:24
< >
分享
最佳答案
0

说思想恐怕不那么直观,我给您写了个代码,您看看行不行。

 1 #include <iostream.h>
 2 
 3 int temp;
 4 //你要的删除函数
 5 DeleteSameElement(int arr[],int n)//n为数组的长度
 6 {
 7     temp = n;//temp是删除后数组的长度
 8     for(int i = n-2 ; i >= 0 ;i--)
 9     {
10         if(arr[i] == arr[i+1])
11         {
12             //找到了相等的元素,则后面的元素要往前移动一位,移动到temp结束,因为每次移动后数组中数据就减少了。
13             for(int j = i ; j < temp-1 ; j++)
14             {
15                 arr[j] = arr[j+1];
16             }
17             temp--;//发现相等的则temp-1
18         }
19     }
20 }
21 
22 int main()
23 {
24     int arr[] = {1,1,3,4,5,6,6,6,7,7};
25     DeleteSameElement(arr,10);
26     for(int k = 0 ; k < temp; k++)
27     {
28         cout<<arr[k]<<" ";
29     }
30     cout<<endl;
31     return 0;
32 }

您自己体会一下看对不对,其实这个函数在STL中有模板算法的,您可以查看STL原代码看看是怎么实现的。祝您好远哦!!

收获园豆:7
VincentPass | 菜鸟二级 |园豆:238 | 2012-07-16 10:07
其他回答(2)
0

因为是有序递增的,你就遍历一次,从倒数第二个往第一个进行遍历,如果你i个和i+1个相同,删除第i个元素。这样不就行了?

收获园豆:2
LCM | 园豆:6876 (大侠五级) | 2012-03-20 14:45
0

遍历一遍就可以了,数据库的话就更加简单了。好像与面向对象没有关系

收获园豆:1
小小刀 | 园豆:1991 (小虾三级) | 2012-03-20 19:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册