成功编写顺序表类的类体和类成员函数并编写main()函数对其进行测试,实现线性表的遍历、按位查找、按值查找、插入、删除等操作
时间: 2024-09-25 22:09:29 浏览: 41
实验2.0_顺序表的实现及基本操作_
在C++中,你可以创建一个顺序列表(也称为动态数组)类,比如`List`,用于实现上述操作。以下是简单的类体和成员函数设计,以及`main()`函数示例:
```cpp
#include <iostream>
// 定义一个元素类型的别名,这里假设是int
using T = int;
class List {
private:
T* data; // 存储数据的指针
size_t capacity; // 初始容量
size_t size; // 当前元素的数量
public:
// 构造函数,初始化一个空列表
List(size_t initial_capacity = 5) : data(new T[initial_capacity]), capacity(initial_capacity), size(0) {}
// 插入元素到列表尾部
void insert(T value) {
if (size == capacity) {
resize(capacity * 2); // 如果满,扩大容量
}
data[size++] = value;
}
// 删除指定位置的元素
void remove(int index) {
if (index >= 0 && index < size) {
for (size_t i = index; i < size - 1; ++i) {
data[i] = data[i + 1];
}
size--;
}
}
// 查找元素的位置(线性查找)
int find(const T& value) const {
for (size_t i = 0; i < size; ++i) {
if (data[i] == value) {
return i;
}
}
return -1; // 如果未找到,返回-1
}
// 遍历列表打印元素
void traverse() const {
std::cout << "List elements: ";
for (size_t i = 0; i < size; ++i) {
std::cout << data[i] << " ";
}
std::cout << "\n";
}
// 私有析构函数,防止用户直接释放内存
~List() { delete[] data; }
private:
// 动态调整容量
void resize(size_t new_capacity) {
T* newData = new T[new_capacity];
for (size_t i = 0; i < size; ++i) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity = new_capacity;
}
};
int main() {
List list;
list.insert(1);
list.insert(2);
list.insert(3);
list.traverse(); // 输出: List elements: 1 2 3
std::cout << "Index of 2: " << list.find(2) << std::endl; // 输出: Index of 2: 1
list.remove(1);
list.traverse(); // 输出: List elements: 1 3
return 0;
}
```
这个例子中,我们实现了顺序列表的基本操作,包括构造、插入、删除、查找和遍历。`main()`函数展示了如何创建一个列表,并通过调用这些成员函数进行操作。
阅读全文