c++实现数据结构顺序表
时间: 2023-11-14 22:04:49 浏览: 107
好的,以下是 C++ 实现数据结构顺序表的代码示例:
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义顺序表最大长度
template <typename T>
class SeqList {
private:
T data[MAXSIZE]; // 存储数据元素的数组
int length; // 当前顺序表长度
public:
SeqList() { length = 0; } // 构造函数,初始化为空表
~SeqList() {} // 析构函数
bool isEmpty() { return length == 0; } // 判断是否为空表
int getLength() { return length; } // 获取当前顺序表长度
bool insert(int i, T e); // 在第 i 个位置插入元素 e
bool remove(int i); // 删除第 i 个位置的元素
int search(T e); // 查找元素 e 在顺序表中的位置
T getElem(int i); // 获取第 i 个位置的元素
void printList(); // 输出顺序表中所有元素
};
template <typename T>
bool SeqList<T>::insert(int i, T e) {
if (i < 1 || i > length + 1) return false; // 插入位置不合法
if (length >= MAXSIZE) return false; // 顺序表已满
for (int j = length; j >= i; j--) {
data[j] = data[j - 1]; // 将第 i~length-1 个元素后移一位
}
data[i - 1] = e; // 将新元素插入到第 i 个位置
length++; // 长度加 1
return true;
}
template <typename T>
bool SeqList<T>::remove(int i) {
if (i < 1 || i > length) return false; // 删除位置不合法
for (int j = i; j < length; j++) {
data[j - 1] = data[j]; // 将第 i+1~length 个元素前移一位
}
length--; // 长度减 1
return true;
}
template <typename T>
int SeqList<T>::search(T e) {
for (int i = 0; i < length; i++) {
if (data[i] == e) return i + 1; // 找到元素 e,返回其位置
}
return 0; // 未找到元素 e,返回 0
}
template <typename T>
T SeqList<T>::getElem(int i) {
if (i < 1 || i > length) throw "位置不合法"; // 获取位置不合法,抛出异常
return data[i - 1];
}
template <typename T>
void SeqList<T>::printList() {
for (int i = 0; i < length; i++) {
cout << data[i] << " ";
}
cout << endl;
}
int main() {
SeqList<int> list;
list.insert(1, 1);
list.insert(2, 2);
list.insert(3, 3);
list.printList(); // 输出:1 2 3
list.remove(2);
list.printList(); // 输出:1 3
cout << list.search(3) << endl; // 输出:2
cout << list.getElem(2) << endl; // 输出:3
return 0;
}
```
阅读全文