删除算法即从数据集合中删除指定的数据元素。删除一个数据元素只要包含两步:第一步为查找,即找到要删除的数据元素。第二步为删除,即将其后元素以此前移。数据集合可分为两类:数据集合无重复值和数据集合中含重复值。
一、数据集合中无重复值
例:数据集合Data无重复值,给定一个关键字key,删除Data中关键字为key的数据元素。
解本题只要按照两个步骤去解就可以了,具体实现代码如下:
#include<stdio.h>
int main(void)
{
int a[8]={3,2,5,8,4,7,6,9};
int i,n,key;
printf("请输入key:");
scanf("%d",&key);
int Delkey(int a[],int n,int key);
n=Delkey(a,8,key);
for(i=0;i<n;i++)
printf("%5d",a[i]);
return 0;
}
int Delkey(int a[],int n,int key)
{
int i,j;
for(i=0;i<n&&a[i]-key;i++);
if(i==n) printf("Not Found!");
else
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
}
return n;
}
二、数据集合含有重复值
针对含重复值的数据集合有两种方法解决:
1.边找边删。即从第一个数据元素开始对数据集合进行遍历,找到一个删一个 ,知道遍历完所有数据元素。