C语言数组元素的删除有两种方法为什么线性表的删除用下面的第二种?

voiddel1(int*p,intn,intm){inti;intk=0;for(i=0;i<n;i++){if(p[i]!=m){p[k]=p[i];k++;}}}v... void del1(int*p,int n,int m)
{
int i;
int k=0;
for(i=0;i<n;i++)
{
if(p[i]!=m)
{
p[k]=p[i];
k++;}
}

}
void del2(int *p,int n,int m)
{ int i,j=0;
for(i=0;i<n;i++)
if(p[i]==m)
j=i;
for(i=j;i<n;i++)
p[i]=p[i+1];
}
展开
 我来答
freecloudinsky
2014-12-13 · 超过32用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:44.9万
展开全部
第一种方法是只要当前值不等于m,就进行拷贝。第二种方法是直接找到待删除元素的位置,将后边的值覆盖前边的。就效率而言,第二哥方法待删除元素前的部分不用进行拷贝操作,所以第二个方法较好。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式