本关任务:要求针对顺序存储的线性表完成四个操作函数,分别实现线性表中数据的插入、删除与查找等功能。
时间: 2024-09-22 11:08:15 浏览: 64
在顺序存储的线性表中,通常使用数组或动态数组作为底层数据结构。为了实现基本的数据操作,你需要编写四个关键函数:
1. 插入(Insert)函数:这个函数接收两个参数,一个是线性表的引用,另一个是要插入的新元素。它会在给定位置(如果指定)将新元素添加到表的末尾,或者根据特定条件(如索引超出范围则插在最后)进行插入。
```cpp
void insert(LinearList& list, int index, const T& value) {
// 检查索引是否合法
if (index < 0 || index > list.length()) {
index = list.length();
}
// 扩展列表长度并把新元素添加进去
list.resize(list.length() + 1);
std::copy(list.begin() + index, list.end(), list.begin() + index + 1); // 移动元素
list[index] = value;
}
```
2. 删除(Delete)函数:接收一个元素值作为参数,找到并移除列表中第一个匹配该值的元素。如果找不到,则不执行任何操作。
```cpp
void deleteItem(LinearList& list, const T& value) {
for (size_t i = 0; i < list.length(); ++i) {
if (list[i] == value) {
std::copy(list.begin() + i, list.end(), list.begin() + i); // 将后面的元素前移一位
list.pop_back(); // 删除最后一个元素
return;
}
}
}
```
3. 查找(Search)函数:输入一个值,遍历整个列表检查是否存在,返回值表示找到的元素的索引(若存在),否则返回-1。
```cpp
int search(LinearList& list, const T& value) {
for (size_t i = 0; i < list.length(); ++i) {
if (list[i] == value) {
return i;
}
}
return -1;
}
```
4. 遍历(Traverse)函数:简单地遍历整个列表,并打印每个元素,常用于调试和展示线性表内容。
```cpp
void traverse(const LinearList& list) {
for (const auto& item : list) {
std::cout << item << " ";
}
std::cout << std::endl;
}
```
阅读全文