【项目2 - 删除数组元素】
del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数。函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素)。函数的原型为:
int del (int a[10],int n,int x)
(1)请实现这个函数,并完成测试。
[参考解答]
(2)如果在函数调用时,要求数组中的元素呈升序排列呢?
思路:例如在下面main函数中的测试,删除77时,分三个阶段:①先找到77;②跨过若干个77后,找到了80;③从80开始,将数据逐个地搬到前面合适的位置(“覆盖”了77及随后的位置)。
后记:实际上,对于本项目中涉及问题,利用好这个有序的特征,反倒使处理变得复杂了,同时也没有带来效率上的提高——和对于无序数组一样,都要“扫描”整个数组。但是,这样的问题如果在工程中,尤其是当n很大时,阶段①的工作可以用二分法完成,这是改进思路之一。另外,存储结构不一定用数组这种顺序存储的结构。总之,这一段程序,作为学习过程中“活动”脑瓜的一个游戏,玩玩也挺好。