ds:顺序表删除重复元素的算法

算法思想:

1.遍历顺序表、移动元素(把未匹配到目标数据的元素前移i-k个位置)

int k =0;int i =0;

k用来计数,i用来扫描顺序表。

当匹配到目标元素时k++,未匹配到目标元素时就i++遍历,并且要将未匹配到的元素前移i-k个位置。

2.修改顺序表的length为length-k

 

例:删除顺序表中值为x的所有元素

代码实现:

// 定义sqList代码略

// init(sqList &L)代码略

void delRepeatElem1(sqList &L,int x){
    int k = 0;  //  计数:L中等于x的元素数量
    int i;
    for(i = 0;i<L.length;i++){
        if(x == L.data[i]){
            k++;
        }else{
            L.data[i-k] = L.data[i];    // 将位置为i的元素向前移动k位
        }
    }
    L.length = i-k;
}

 

posted @ 2023-05-04 22:14  _titleInfo  阅读(86)  评论(0编辑  收藏  举报
//雪花飘落效果