已知一个顺序表中的元素存在重复值,下列算法删除顺序表中关键字的重复值,使得 关键字相同的元素在表中只保留一
时间: 2023-10-12 13:15:11 浏览: 120
可以使用双重循环来实现删除顺序表中的重复元素。具体步骤如下:
1. 外层循环遍历顺序表中的每一个元素;
2. 内层循环从当前元素的下一个位置开始遍历整个顺序表,查找是否有与当前元素相同的元素;
3. 如果找到了相同的元素,就将该元素从顺序表中删除;
4. 如果没有找到相同的元素,就将内层循环终止。
下面是具体的实现代码:
```c
void deleteDuplicate(SqList &L) {
for (int i = 0; i < L.length; i++) {
for (int j = i + 1; j < L.length; ) {
if (L.data[j] == L.data[i]) {
for (int k = j; k < L.length - 1; k++) {
L.data[k] = L.data[k + 1];
}
L.length--;
} else {
j++;
}
}
}
}
```
其中,`SqList` 表示顺序表类型,`L` 表示待处理的顺序表。在函数中,使用 `i` 来表示当前遍历到的元素的下标,使用 `j` 来表示内层循环中查找相同元素的起始位置,使用 `k` 来表示需要删除元素的位置。如果找到了相同的元素,就将该元素从顺序表中删除,并且将顺序表的长度减一;否则,将 `j` 加一,继续查找下一个元素。
阅读全文