#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#define MAX 50
// 顺序线性表的存储结构
template<typename T>
class Sequence {
public:
std::vector<T> data;
size_t length;
Sequence();
};
// 构造函数 - 初始值
template<typename T>
Sequence<T>::Sequence() {
for (int i = 0; i < MAX; i++) data.push_back(0);
length = 0;
}
// 插入值
template<typename T>
bool insert(Sequence<T> &list, int data, size_t index) {
if (index < 1 || index > list.length || list.length >= MAX) // 判断位置 index 是否符合条件
{
std::cout << "ERROR" << std::endl;
}
else {
for (int i = list.length - 1; i != index - 1; i--) {
list.data[i + 1] = list.data[i]; // 将数据往后移一位
}
list.data[index - 1] = data; // 将元素插入
list.length++;
return true;
}
return false;
}
int main() {
Sequence<int> list;
int data;
size_t index;
srand(static_cast<unsigned> (time(NULL))); // 随机种子
// 例子:随机生成 10 个数,取值范围 0 至 100(含)
for (int i = 0; i < 10; i++) {
list.data[i] = rand() % 100;
list.length++;
std::cout << list.data[i] << " "; // 打印
}
std::cout << std::endl;
// 测试
std::cout << "输入要添加的数据:";
std::cin >> data;
std::cout << "输入要添加的位置:";
std::cin >> index;
insert(list, data, index);
system("pause"); // 停顿一阵子
for (int i = 0; i < static_cast<int> (list.length); i++) {
std::cout << list.data[i] << " "; // 打印
}
return 0;
}