本关任务:实现 step1/Seqlist.cpp 中的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入、删除与查找等功能。
时间: 2024-09-09 17:00:58 浏览: 212
在step1/Seqlist.cpp文件中,你需要为顺序列表(Sequential List,简称SL)实现`SL_InsAt`、`SL_DelAt`和`SL_DelValue`这三个函数。它们分别对应于对线性表的操作:
1. `SL_InsAt`(Insert At)函数:这个函数的作用是在给定的位置`index`插入一个新的元素`value`。它需要检查索引的有效性(是否在合法范围内),然后将指定位置之后的所有元素向后移动一位,以便为新元素腾出空间。
```cpp
void SL_InsAt(SequList& list, int index, T value) {
if (index < 0 || index > list.size()) {
// 处理越界情况
return;
}
for (int i = list.size(); i > index; --i) {
list[i] = list[i - 1]; // 将元素移到右侧
}
list[index] = value; // 插入新元素
}
```
2. `SL_DelAt`(Delete At)函数:这个函数用于删除指定索引处的元素。首先同样检查索引有效性,然后如果该索引存在,将其后的所有元素向前移动一位填补空缺。
```cpp
void SL_DelAt(SequList& list, int index) {
if (index < 0 || index >= list.size()) {
return;
}
for (int i = index; i < list.size() - 1; ++i) {
list[i] = list[i + 1]; // 向前移动元素
}
list.pop_back(); // 删除最后一个元素
}
```
3. `SL_DelValue`(Delete Value)函数:这个函数删除第一个找到的特定值,而不是通过索引。它会遍历整个列表直到找到目标值或到达结尾。
```cpp
void SL_DelValue(SequList& list, const T& value) {
for (size_t i = 0; i < list.size(); ) {
if (list[i] == value) {
SL_DelAt(list, i); // 调用 DelAt 函数删除元素
break;
} else {
i++;
}
}
}
```
阅读全文