c++ 初始化一个非空的顺序表(顺序表的长度自定),1.在主函数中调用此函数 对建立好的非空顺序表实现插入操作(插入位置和插入的元素值自定), 2.对顺序表实现删除某个位置上数据元素的操作(删除位置自定) ,3.实现顺序表的按位查找和按元素值查找(位置和元素值自定)
时间: 2024-09-12 18:09:41 浏览: 53
在C++中初始化一个非空的顺序表通常可以使用数组或者`std::vector`来实现。下面是一个简单的示例,展示如何使用`std::vector`来完成你的要求。
首先,我们定义一个顺序表类,它内部使用`std::vector`作为数据存储结构。然后实现初始化、插入、删除和查找等操作。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
class SeqList {
public:
SeqList(int size) {
data.reserve(size);
for (int i = 0; i < size; ++i) {
data.push_back(i); // 初始化顺序表为0到size-1的整数序列
}
}
void Insert(int position, int value) {
if (position >= 0 && position <= data.size()) {
data.insert(data.begin() + position, value);
} else {
std::cout << "插入位置不合法!" << std::endl;
}
}
bool Delete(int position) {
if (position >= 0 && position < data.size()) {
data.erase(data.begin() + position);
return true;
} else {
std::cout << "删除位置不合法!" << std::endl;
return false;
}
}
int LocateElement(int value) {
for (int i = 0; i < data.size(); ++i) {
if (data[i] == value) {
return i;
}
}
return -1; // 如果没有找到,返回-1
}
int LocateByPosition(int position) {
if (position >= 0 && position < data.size()) {
return data[position];
} else {
std::cout << "查找位置不合法!" << std::endl;
return -1;
}
}
void Print() {
for (int num : data) {
std::cout << num << " ";
}
std::cout << std::endl;
}
private:
std::vector<int> data;
};
int main() {
SeqList mySeqList(5); // 初始化一个长度为5的顺序表
mySeqList.Print(); // 打印初始化后的顺序表
// 插入操作
mySeqList.Insert(2, 10); // 在位置2插入元素10
mySeqList.Print(); // 打印插入后的顺序表
// 删除操作
bool result = mySeqList.Delete(3); // 删除位置3的元素
if (result) {
mySeqList.Print(); // 打印删除后的顺序表
}
// 按位查找操作
int valueAtPos3 = mySeqList.LocateByPosition(3);
std::cout << "位置3的元素值为: " << valueAtPos3 << std::endl;
// 按元素值查找操作
int positionOfValue10 = mySeqList.LocateElement(10);
std::cout << "元素值为10的位置为: " << positionOfValue10 << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个顺序表类`SeqList`,它有初始化、插入、删除、按位查找和按元素值查找等方法。在`main`函数中,我们创建了一个长度为5的顺序表,然后依次进行了插入、删除、按位查找和按元素值查找操作,并打印了每次操作后的顺序表内容。
阅读全文