鱼C论坛

 找回密码
 立即注册
查看: 2707|回复: 1

顺序串的插入

[复制链接]
发表于 2022-3-27 15:52:27 | 显示全部楼层 |阅读模式
30鱼币
请问如何实现顺序串的插入,要求用c++模板的写,课本为张铭主编的数据结构与算法。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 11:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表