说思想恐怕不那么直观,我给您写了个代码,您看看行不行。
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原代码看看是怎么实现的。祝您好远哦!!
因为是有序递增的,你就遍历一次,从倒数第二个往第一个进行遍历,如果你i个和i+1个相同,删除第i个元素。这样不就行了?
遍历一遍就可以了,数据库的话就更加简单了。好像与面向对象没有关系