add old lci module
This commit is contained in:
1 parent
38a6e815f0
commit
8499631091
171 files changed
+25562
No files matched your search
@@ -0,0 +1,97 @@
|
||||
#pragma once
|
||||
#include "中文化.hpp"
|
||||
#include "异常.hpp"
|
||||
#include "顺序表.hpp"
|
||||
命名空间 中文标准 {
|
||||
模板 <类型名 类型1, 长度单位 节点大小 = 64>
|
||||
类 链串 {
|
||||
公开的:
|
||||
/* 初始化为空链串 */
|
||||
链串() {
|
||||
对象->长度 = 0;
|
||||
对象->下一个 = 空指针;
|
||||
对象->上一个 = 空指针;
|
||||
对象->头 = 对象; /* 每一个子节点都记录同一个头结点 */
|
||||
对象->尾 = 对象; /* 为了方便,只有头结点记录尾节点 */
|
||||
}
|
||||
|
||||
链串 (常量 std::initializer_list<类型1>& init = {})
|
||||
{
|
||||
计次循环(适应 & 东西: init) {
|
||||
插入(东西);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 链式析构
|
||||
*
|
||||
* 析构时,会递归析构所有节点。
|
||||
*/
|
||||
~链串() {
|
||||
删除[] 对象->下一个;
|
||||
}
|
||||
|
||||
空类型 插入(常量 类型1& 元素) {
|
||||
链串 *暂时 = 对象->尾;
|
||||
如果(暂时->长度 等于 节点大小)
|
||||
_推();
|
||||
暂时->存储[暂时->长度++] = 元素;
|
||||
}
|
||||
|
||||
长度单位 统计() {
|
||||
长度单位 总数 = 0;
|
||||
链串 *暂时 = 对象->头;
|
||||
判断循环(暂时 != 空指针) {
|
||||
总数 += 暂时->长度;
|
||||
暂时 = 暂时->下一个;
|
||||
}
|
||||
返回 总数;
|
||||
}
|
||||
|
||||
/*
|
||||
* 链串重组
|
||||
*
|
||||
* 将链串重组为顺序表W
|
||||
*/
|
||||
顺序表<类型1> 重组() {
|
||||
顺序表<类型1> 结果(统计());
|
||||
链串 *暂时 = 对象->头;
|
||||
长度单位 计数 = 0;
|
||||
判断循环(暂时 != 空指针) {
|
||||
计次循环(适应 索引 = 0; 索引 < 暂时->长度; ++索引) {
|
||||
结果[计数++] = 暂时->存储[索引];
|
||||
}
|
||||
暂时 = 暂时->下一个;
|
||||
}
|
||||
返回 结果;
|
||||
}
|
||||
|
||||
类 链串异常: 公开的 标准异常{
|
||||
公开的:
|
||||
链串异常(常量 字符* 消息) : 标准异常(消息) {}
|
||||
};
|
||||
私有的:
|
||||
类型1 存储[节点大小];
|
||||
长度单位 长度; /* 存储中的元素数量 */
|
||||
链串 *下一个;
|
||||
链串 *上一个;
|
||||
链串 *头;
|
||||
链串 *尾;
|
||||
|
||||
空类型 _推() {
|
||||
链串*新的;
|
||||
尝试{ 新的 = 新建 链串(); }
|
||||
捕获异常 (std::exception& exp){
|
||||
抛出异常 链串异常{"链串推失败"};
|
||||
}
|
||||
_拼接节点(新的);
|
||||
}
|
||||
|
||||
空类型 _拼接节点(链串* 新的) {
|
||||
对象->尾->下一个 = 新的;
|
||||
新的->上一个 = 对象->尾;
|
||||
对象->尾 = 新的;
|
||||
新的->头 = 对象;
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user