waixiong 发表于 2022-3-27 15:52:27

顺序串的插入

请问如何实现顺序串的插入,要求用c++模板的写,课本为张铭主编的数据结构与算法。

傻眼貓咪 发表于 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 = list.data; // 将数据往后移一位
                }
                list.data = 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 = rand() % 100;
                list.length++;
                std::cout << list.data << " "; // 打印
        }
        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 << " "; // 打印
        }
        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
页: [1]
查看完整版本: 顺序串的插入