假设 使用c++顺序表 L中的元素按从小到大的次序排列,设计算法以删除表中重复的元素, 并要求时间尽可能少。
时间: 2023-08-31 09:10:26 浏览: 200
算法思路:
1. 从第二个元素开始,依次与前一个元素比较,如果相等,则删除该元素。
2. 重复上述步骤,直到将所有重复元素删除。
算法实现:
```
void deleteRepeat(SeqList *L) {
int i, j;
for(i = 1; i < L->length; i++) {
if(L->data[i] == L->data[i-1]) {
for(j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
i--;
}
}
}
```
算法分析:
时间复杂度为O(n),因为只需遍历一次顺序表。空间复杂度为O(1),因为只需用到常数个额外空间。
阅读全文