用c++实现顺序表的操作集
时间: 2023-08-24 18:41:19 浏览: 98
顺序表是一种线性表,它的元素在内存中是连续存放的。下面是C++实现顺序表的基本操作集:
```C++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义最大长度
template <typename T>
class SeqList {
public:
SeqList(); // 构造函数
~SeqList(); // 析构函数
void clearList(); // 清空顺序表
bool isEmpty(); // 判断顺序表是否为空
int length(); // 获取顺序表长度
bool getElem(int pos, T& elem); // 获取指定位置的元素
int locateElem(T elem); // 查找元素所在位置
bool insert(int pos, T elem); // 在指定位置插入元素
bool remove(int pos); // 删除指定位置的元素
void display(); // 打印顺序表
private:
T data[MAXSIZE]; // 存放元素的数组
int size; // 当前长度
};
template <typename T>
SeqList<T>::SeqList() {
size = 0;
}
template <typename T>
SeqList<T>::~SeqList() {}
template <typename T>
void SeqList<T>::clearList() {
size = 0;
}
template <typename T>
bool SeqList<T>::isEmpty() {
return size == 0;
}
template <typename T>
int SeqList<T>::length() {
return size;
}
template <typename T>
bool SeqList<T>::getElem(int pos, T& elem) {
if (pos < 1 || pos > size) {
return false;
}
elem = data[pos - 1];
return true;
}
template <typename T>
int SeqList<T>::locateElem(T elem) {
for (int i = 0; i < size; i++) {
if (data[i] == elem) {
return i + 1;
}
}
return 0;
}
template <typename T>
bool SeqList<T>::insert(int pos, T elem) {
if (pos < 1 || pos > size + 1 || size == MAXSIZE) {
return false;
}
for (int i = size - 1; i >= pos - 1; i--) {
data[i + 1] = data[i];
}
data[pos - 1] = elem;
size++;
return true;
}
template <typename T>
bool SeqList<T>::remove(int pos) {
if (pos < 1 || pos > size) {
return false;
}
for (int i = pos - 1; i < size - 1; i++) {
data[i] = data[i + 1];
}
size--;
return true;
}
template <typename T>
void SeqList<T>::display() {
for (int i = 0; i < size; i++) {
cout << data[i] << " ";
}
cout << endl;
}
```
以上是基本的操作集,你可以根据需要进行扩展,例如扩展排序等操作。
阅读全文