顺序表的基本运算程序,至少10种功能 合成一个代码
时间: 2024-12-20 09:24:17 浏览: 3
顺序表是一种线性数据结构,其基本操作通常包括插入、删除、查找、获取元素、设置元素等。以下是10种常见的顺序表基本运算的伪代码,这里假设我们有一个简单的整型顺序表`List<int>`:
```cpp
// 定义一个顺序表模板
template <typename T>
class List {
private:
T* elements; // 存储元素的数组
int size; // 当前元素的数量
int capacity; // 数组的最大容量
public:
// 初始化列表
List(int initialCapacity = 10) : elements(new T[initialCapacity]), size(0), capacity(initialCapacity) {}
// 插入元素到列表末尾
void insert(int value) {
if (size == capacity) resize(capacity * 2); // 若已满,则扩容
elements[size++] = value;
}
// 删除指定索引处的元素
void removeAt(int index) {
if (index >= 0 && index < size) {
memmove(&elements[index], &elements[index + 1], (size - index - 1) * sizeof(T));
size--;
}
}
// 查找元素
bool find(int value, int& position) const { // 返回值的位置
for (int i = 0; i < size; i++) {
if (elements[i] == value) {
position = i;
return true;
}
}
position = -1; // 如果未找到,返回-1
return false;
}
// 获取指定位置的元素
T get(int index) const {
if (index >= 0 && index < size) return elements[index];
throw std::out_of_range("Index out of range"); // 异常处理:索引越界
}
// 设置指定位置的元素
void set(int index, T value) {
if (index >= 0 && index < size) elements[index] = value;
else throw std::out_of_range("Index out of range");
}
// 判断列表是否为空
bool isEmpty() const {
return size == 0;
}
// 获取列表大小
int getSize() const {
return size;
}
// 扩容
void resize(int newCapacity) {
T* newElements = new T[newCapacity];
for (int i = 0; i < size; i++)
newElements[i] = elements[i];
delete[] elements;
elements = newElements;
capacity = newCapacity;
}
// 清空列表
void clear() {
delete[] elements;
elements = nullptr;
size = 0;
capacity = 10; // 或者根据需要重新初始化
}
// 释放内存
~List() {
clear();
}
};
// 示例如何使用
List<int> list;
list.insert(5);
int pos;
if (list.find(5, pos)) {
list.set(pos, 10); // 修改找到的元素
} else {
cout << "Element not found";
}
```
阅读全文