2. 计算题 试编写一个函数,用以删除顺序表L中所有值为x的元素(要求就地工作)
时间: 2024-02-11 22:08:54 浏览: 71
好的,以下是一个删除顺序表中所有值为x的元素的函数的实现:
```c
void delete_x(SqList &L, ElemType x) {
int k = 0; // k用于记录顺序表中不等于x的元素个数
for (int i = 0; i < L.length; i++) {
if (L.data[i] != x) {
L.data[k] = L.data[i];
k++;
}
}
L.length = k; // 最后修改顺序表的长度
}
```
函数的参数是一个顺序表L和一个元素x,函数会遍历整个顺序表,将不等于x的元素移动到顺序表的前面,最后修改顺序表的长度为不等于x的元素个数。需要注意的是,这个函数实现的是就地删除,即不需要开辟新的空间,直接在原有的顺序表上进行修改。
阅读全文