数据结构之删除线性表同一个元素

删除线性表中同一个元素z

方法一:重建法
从左向右遍历线性表,找到不是z的元素,把这些元素放到新的线性表中;新的线性表可以以原线性表为基础建立。

void delnode(Sqlist *&l,Elem type z)
{
   int i,k=0;    //k记录不等于元素z的个数
   for(i=0;i<l->length;i++)
      if(l->date[i]!=z)//若元素不等于z时,把元素插入到新l中
      {
        l->date[k]=l->date[i];
        k++;//插入一个元素k加一
      }
      l->length=k;//线性表的长度为k

}

方法二:迁移法
从左遍历线性表,找到元素z并用k来记录它的个数,用z后面的元素迁移到z的位置取代它。

void delnode(sqlist*&l,Elem type z)
{
  int k=0,i;//k来记录元素为z的个数
  for(i=0;i<l->length;i++)
     {
       if(l->date[i]==z)//若元素等于z则k加一
          k++;
       else
          l->date[i-k]=l->date[i];//若元素不等于z是,使元素前移k
     }
}
发布了7 篇原创文章 · 获赞 0 · 访问量 66

猜你喜欢

转载自blog.csdn.net/m0_46645068/article/details/105170850