编写函数实现基本运算方法。基本运算方法应包括创建顺序表、销毁顺序表、求顺序表长度、 求顺序表某一位置节点的值、查找值为 x 的节点所在位置、新增节点、插入节点、删除节点。
时间: 2024-09-18 20:12:26 浏览: 44
编写函数,建立一个顺序表并输出,计算该顺序表的长度。 实现在顺序表中查找第i个元素的值。实现在顺序表中第i个位置上插入值为x的
5星 · 资源好评率100%
为了实现基本的顺序表操作,我们可以编写一个模板类`SequentialList`,包含上述提到的各种方法。这里是一个简化的C++代码示例:
```cpp
template <typename T>
class SequentialList {
private:
T* elements; // 存放元素的数组
size_t length; // 序列长度
size_t capacity; // 序列最大容量
public:
// 构造函数
SequentialList(size_t initial_capacity = 10)
: elements(new T[initial_capacity]), length(0), capacity(initial_capacity) {}
// 析构函数,释放内存
~SequentialList() {
delete[] elements;
}
// 获取长度
size_t get_length() const {
return length;
}
// 在特定位置获取元素值
T get_value(size_t index) const {
if (index < 0 || index >= length) {
throw std::out_of_range("Index out of range");
}
return elements[index];
}
// 查找值为x的节点位置
size_t find(const T& x) const {
for (size_t i = 0; i < length; ++i) {
if (elements[i] == x) {
return i;
}
}
return length; // 如果未找到,返回列表末尾
}
// 新增节点
void add(T value) {
if (length == capacity) {
expand_capacity();
}
elements[length++] = value;
}
// 插入节点
void insert(size_t index, T value) {
if (index > length) {
throw std::invalid_argument("Index is larger than the current length");
}
if (length == capacity) {
expand_capacity();
}
for (size_t i = length; i > index; --i) {
elements[i] = elements[i - 1];
}
elements[index] = value;
length++;
}
// 删除节点
void remove(size_t index) {
if (index < 0 || index >= length) {
throw std::out_of_range("Index out of range");
}
for (size_t i = index; i < length - 1; ++i) {
elements[i] = elements[i + 1];
}
length--;
}
private:
// 扩展容量
void expand_capacity() {
auto new_elements = new T[capacity * 2];
std::copy(elements, elements + length, new_elements);
delete[] elements;
elements = new_elements;
capacity *= 2;
}
};
```
阅读全文