删除数组元素

来源:互联网 发布:提词器软件下载 编辑:程序博客网 时间:2024/06/05 14:38

在c语言中定义并初始化一个数组后如果想要删除其中的某一个元素该怎么实现呢?因为数组一旦初始化,内存就分配好了!我们要做的删除并不是将这个元素删掉,因为数组的长度无非改变!所以我们要做的“删除”并不是真正意义的删除!

1>>我们先来考虑一种简单的情况!删除数组中的一个元素的时候,代码如下:



看到以上的代码,应该可以明白我所说的我这里所说的删除并不是删除其元素,因为数组的长度是一定的,我们只是采用了一些小手段使得del_val被删除了而已!接下来我们再深入一点!

2>>如果需要删除数组中的多个元素,出现了多个del_val的话又要分两种情况:

2.1>>当数组元素有序时是简单一点的情况,我们来看一看这个问题的代码:


其实删除一个和多个del_val的关键是函数的返回值end,两个代码中都是由i向end输出然后达到了删除元素的假象,所以删除元素时要有建立“岗哨”的概念。

   2.2>>还有一种复杂一点的情况就是del_val是无序的,我们来看一看这个问题的代码:


这个就是通过来缩小区间,一个一个来删除del_val的,特别主要的是(i++)不能放在for中因为会导致i下的元素时del_val而未被删除。

我们再回到问题的源头,删除元素就是先找到del_val,然后再删除元素,但是是不可能删除的,我们完成的只是保留了需要保留的,删除要删除的,所以写出一个“全能版”的代码如下:


以上就是删除数组中元素的一些算法,主要是要有数组的元素个数无法更改的意识,然后通过缩小n和覆盖del_val来达到“删除”数组元素的目的!

0 0
原创粉丝点击