|
发表于 2022-3-27 17:19:04
|
显示全部楼层
如果有题目更好,不知道是不是你要的代码:- #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;
- }
复制代码- 23 83 45 7 67 41 38 12 69 91
- 输入要添加的数据:777
- 输入要添加的位置:7
- Press any key to continue . . .
- 23 83 45 7 67 41 777 12 12 69 91
复制代码 |
|