unicstl/doc
2026-05-14 15:02:35 +08:00
..
notes.md docs: 更新说明 2026-05-14 15:02:35 +08:00
PERF.md feat(perf): 重构性能测试框架(支持多组参数配置)并增加perf_log(利用darray实现并格式化输出) 2026-05-13 17:00:39 +08:00
README.md docs: 更新说明 2026-05-14 15:02:35 +08:00
unicstl.log rbt测试通过 2024-09-02 21:14:16 +08:00

unicstl

编译环境

  • 编译器gcc 13.2.0
  • 标准:--std=c99

特点

原理 优势 弊端
链表 插入删除效率高 有额外指针开销
动态数组 随机访问效率高 扩容时数据搬移代价较大
--- --- ---
单链表 适用内存受限场景 逆向不便
双向链表 频繁双向遍历的场景(如光标移动) 空间开销大

性能比较

数据结构 < > <空间复杂度>
--- ( ) ( ) 最坏
--- 访问 搜索 插入 删除 访问 搜索 插入 删除 ---
数组 O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(n) O(n)
O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
队列 O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
单向链表 O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
双向链表 O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
跳表 O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n) O(n) O(n) O(n) O(n*log(n))
哈希表 N/A O(1) O(1) O(1) N/A O(n) O(n) O(n) O(n)
二叉搜索树 O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n) O(n) O(n) O(n) O(n)
AVL树 O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
红黑树 O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)
B树 O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(log(n)) O(n)

【答疑】 若链表的操作流程为,先查找元素再删除元素。那么时间复杂度确实是$O(n)$。但是链表的增删优势,在其他应用有体现。比如双向队列,插入和删除效率都为$O(1)$。

规范

版本说明

命名 版本说明 范围 更新说明
VERSION_MAJOR 主版本号 0 ~ 99 代码框架大改,完全不兼容旧版
VERSION_MINOR 次版本号 0 ~ 99 代码框架尽量兼容旧版增信大功能、修复重大bug等
VERSION_MICRO 小版本号 0 ~ 99 代码框架兼容旧版新增小功能、修复bug等

举例说明:

// 若 major > 0 ,则代表正式发布版本
#define UNICSTL_VERSION_MAJOR    1
#define UNICSTL_VERSION_MINOR    2
#define UNICSTL_VERSION_MICRO    5
#define UNICSTL_VERSION          ((UNICSTL_VERSION_MAJOR << 16) | (UNICSTL_VERSION_MINOR << 8) | UNICSTL_VERSION_MICRO)

工程命名

工程名(_功能)_v版本号_日期(_时间)(-其他信息)

括号内表示可选项

其他信息后缀 说明 详细
aX alpha内测版 可能仅测试了新增功能,但没有测试新增功能对其他模块的影响
bX beta公测版 不仅测试了新增功能,也测试了其他模块,尽量保证新增的功能不影响原来的旧功能。
... 或者添加其他有有效信息

举例说明:

unicstl_stack_v1.2.5_20240717-a0.zip

# 带a或者b后缀表示当前版本发布前的测试版。如果发布后则直接更新版本号了