删除顺序表中的某个元素
实现1:(查找到与value相同的元素,将指针不断右移知道与value不同)
C++代码:
void del_elem(int *sqList,int value,int & length){
int i,d=0;
for(i=0;i<length-d;i++){
while(sqList[i+d]==value){
d++;
}
sqList[i]=sqList[i+d];
}
length-=d;
}
注意点:记得使用while语句做判断,不然不能删除连续的value
实现效果:
仿王道伪代码:
1 void del_x_l(sqList & L,ElemType x){
2 int i,d=0;
3 for(i=0;i<sqList.length-d;i++){
4 while(sqList.data[i+d]==x){
5 d++;
6 }
7 sqList.data[i]=sqList.data[i+d];
8 }
9 sqList.length-=d;
10 }
王道P20 T3
实现2:(用辅助下标k记录与value不同的元素)
C++代码:
1 void del_elem(int *sqList,int value,int & length){
2 int i,k=0;
3 for(i=0;i<length;i++){
4 if(sqList[i]!=value){
5 sqList[k++]=sqList[i];
6 }
7 }
8 length=k;
9 }
实现3:(用k记录与value相同的元素数量)
C++代码:
void del_elem(int *sqList,int value,int & length){
int i,k=0;
for(i=0;i<length;i++){
if(sqList[i]==value){
k++;
}else{
sqList[i-k]=sqList[i];
}
}
length-=k;
}
注意点:不能写成 sqList[i]=sqList[i-k]; ,避免逻辑上的错误
原文链接: https://www.cnblogs.com/TQCAI/p/8098344.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/266411
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!