C++实现的顺序表类,包括了初始化、赋值、遍历、取值、求表长、插入、查找、删除和退出等基本操作:
时间: 2024-10-12 09:14:00 浏览: 46
在C++中,可以创建一个简单的顺序表(如数组或动态数组)来存储元素并支持上述操作。这里是一个基础的顺序表类示例:
```cpp
#include <iostream>
using namespace std;
class SequenceList {
private:
int* elements; // 存储数据的指针
int size; // 当前列表长度
int capacity; // 初始容量
public:
// 初始化函数
SequenceList(int capacity = 10) : elements(new int[capacity]), size(0), capacity(capacity) {}
~SequenceList() { // 析构函数,释放内存
delete[] elements;
}
// 赋值操作符重载
SequenceList& operator=(const SequenceList& other) {
if (this != &other) {
delete[] elements;
size = other.size;
capacity = other.capacity;
elements = new int[capacity];
for (int i = 0; i < size; ++i)
elements[i] = other.elements[i]; // 深拷贝
}
return *this;
}
// 遍历
void traverse() const {
cout << "Elements in the list: ";
for (int i = 0; i < size; ++i)
cout << elements[i] << " ";
cout << endl;
}
// 取值
int get(int index) const {
if (index >= 0 && index < size)
return elements[index];
else
throw out_of_range("Index is out of range.");
}
// 求表长
int length() const { return size; }
// 插入
void insert(int value, int index = 0) {
if (index > size)
index = size;
if (size == capacity) {
resize(capacity * 2); // 如果已满,扩容
}
for (int i = size; i > index; --i)
elements[i] = elements[i - 1]; // 将后续元素后移
elements[index] = value;
size++;
}
// 查找
int search(const int& target) const {
for (int i = 0; i < size; ++i)
if (elements[i] == target)
return i;
return -1; // 如果未找到目标,返回 -1
}
// 删除
void remove(int index) {
if (index < 0 || index >= size)
throw out_of_range("Index is out of range.");
for (int i = index; i < size - 1; ++i)
elements[i] = elements[i + 1]; // 后面的元素向前移动
size--;
}
// 退出函数
void exit() { cout << "Leaving the sequence list...\n"; } // 这里只是一个标记,实际程序无需显示此消息
};
// 示例
int main() {
SequenceList list(5);
list.insert(1);
list.insert(2, 1);
list.traverse();
cout << "Length: " << list.length() << endl;
cout << "Search result for 2: " << list.search(2) << endl;
return 0;
}
```
阅读全文