用C++编写数据结构代码,在顺序表L中删除指定元素 e,其中参数 type=1表示只删除第一个e,type=2 表示将元素e全部删除,返回删除元素的个数:int deleteElem(SqList &L, ElemType e, int type);
时间: 2024-10-21 13:03:59 浏览: 20
在C++中,我们可以定义一个名为`deleteElem`的函数来操作顺序列表(`SqList`),这个函数接受一个引用类型的顺序列表、一个要删除的元素以及删除类型(整数type)。下面是针对两种情况(删除第一个元素和删除所有元素)的简单实现:
```cpp
#include <iostream>
// 假设 SqList 是一个自定义的数据结构,包含一个数组和指针
template<typename T>
class SqList {
private:
T* data;
size_t size;
public:
// 其他必要的构造函数、获取元素等方法
// 删除第一个匹配的元素并返回删除的数量(type=1)
int deleteFirst(ElemType e) {
for (size_t i = 0; i < size; ++i) {
if (data[i] == e) {
memmove(data + i, data + i + 1, sizeof(T) * (size - i - 1));
size--;
return 1;
}
}
return 0; // 如果未找到 e,则返回0
}
// 删除所有匹配的元素并返回删除的数量(type=2)
int deleteAll(ElemType e) {
size_t count = 0;
for (size_t i = 0; i < size; ) {
if (data[i] == e) {
memmove(data + i, data + i + 1, sizeof(T) * (size - i - 1));
size--;
count++;
} else {
i++;
}
}
return count;
}
};
// 定义删除操作的函数模板
template<typename T>
int deleteElem(SqList<T>& L, T e, int type) {
switch (type) {
case 1: // 删除第一个
return L.deleteFirst(e);
case 2: // 删除所有
return L.deleteAll(e);
default:
std::cerr << "Invalid type! Type must be either 1 or 2." << std::endl;
return -1; // 错误处理
}
}
```
阅读全文