用c++写一个顺序表包含以下功能1清空线性表2--- 判断线性表是否为空 3---﹣求线性表长度 4---◇获取线性表指定位置元素 ﹣求前驱 6--◇◇求后继 7---◇在线性表指定位置插入元素 8---◇删除线性表指定位置元素 9--﹣显示线性表 退出输入一个负数◇
时间: 2024-09-17 20:00:30 浏览: 49
数据结构学习--线性表及其应用--顺序表
5星 · 资源好评率100%
在C++中,我们可以创建一个简单的顺序表(数组实现),用于实现上述功能。这里是一个简化的例子:
```cpp
#include <iostream>
class SequentialList {
private:
int* data; // 存储数据的指针
int size; // 线性表当前元素个数
int capacity; // 容量
public:
SequentialList(int initialCapacity = 5) {
data = new int[initialCapacity];
capacity = initialCapacity;
size = 0;
}
~SequentialList() { // 析构函数,防止内存泄漏
delete[] data;
}
// 判断线性表是否为空
bool isEmpty() const {
return size == 0;
}
// 求线性表长度
int length() const {
return size;
}
// 获取指定位置的元素 (索引从0开始)
int get(int index) const {
if (index >= 0 && index < size) {
return data[index];
}
throw std::out_of_range("Index out of range");
}
// 求前驱 (返回值为-1,因为顺序表无前驱节点)
int predecessor(int index) const {
if (index > 0) {
return get(index - 1);
} else {
return -1;
}
}
// 求后继 (返回值为-1,因为顺序表无后继节点)
int successor(int index) const {
if (index < size - 1) {
return get(index + 1);
} else {
return -1;
}
}
// 在指定位置插入元素
void insertAt(int index, int value) {
if (index < 0 || index > size) {
throw std::out_of_range("Invalid insertion index");
}
if (size == capacity) {
resize(capacity * 2); // 当满时扩大容量
}
for (int i = size; i > index; --i) {
data[i] = data[i - 1];
}
data[index] = value;
++size;
}
// 删除指定位置的元素
void removeAt(int index) {
if (index < 0 || index >= size) {
throw std::out_of_range("Invalid removal index");
}
for (int i = index; i < size - 1; ++i) {
data[i] = data[i + 1];
}
--size;
}
// 显示线性表
void display() const {
for (int i = 0; i < size; ++i) {
std::cout << "Element at index " << i << ": " << data[i] << " ";
}
std::cout << "\n";
}
// 清空线性表
void clear() {
for (int i = 0; i < size; ++i) {
data[i] = 0;
}
size = 0;
}
// 输入负数退出程序
static void inputExit() {
std::cin >> size;
if (size < 0) {
exit(0); // 使用系统退出,终止程序
}
}
};
int main() {
SequentialList list;
list.inputExit();
// 调用各个方法...
// ...
list.clear(); // 清空线性表
list.display(); // 显示线性表
return 0;
}
```
阅读全文