顺序串的插入
请问如何实现顺序串的插入,要求用c++模板的写,课本为张铭主编的数据结构与算法。 如果有题目更好,不知道是不是你要的代码:#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]