删除线性表中同一个元素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
}
}