unicstl/README.md

52 lines
1.3 KiB
Markdown

# unicstl
## 简介
全称: Universal C standard library
基于C语言实现的通用C库。包含常用数据结构和算法
> 标准:--std=c99
[数据结构详细说明](http://wenjianfeng.top)
## 数据结构
|数据结构 | 原理 |说明 |
|---|---|---|
| **stack** | | **栈** |
| stack_new | 链表 | |
| stack_new2 | 动态数组 | |
| **list** | | **列表**
| list_init2 | 动态数组 | |
| **queue** | | **队列**
| queue_init | 单向链表 | |
| queue_init2 | 数组 | FIFO/空/满 |
| **deque** | |**双端队列** |
| deque_init | 双向循环链表 | |
| **tree** | |**树** |
| tree_avl_init | 二叉搜索树 | AVL树 |
| tree_rb_init | 二叉搜索树 | 红黑树 |
| **heap** | |**堆** |
| heap_init2 | 数组 | 最大堆/最小堆 |
## 特点
| 原理 | 说明 |
| --- | --- |
| 链表 | 有额外指针开销 |
| 动态数组 | 扩容时数据搬移代价较大 |
## 性能比较
|项目| 数组| 链表|
|---|---|---|
|查找| $O(1)$ | $O(n)$ |
|插入| $O(n)$ | $O(1)$ |
|删除| $O(n)$ | $O(1)$ |
**【A1】** 若链表的操作流程为,先查找元素再删除元素。那么时间复杂度确实是$O(n)$。但是链表的增删优势,在其他应用有体现。比如双向队列,插入和删除效率都为$O(1)$。
## 版本
| 版本 | 说明 |
|:----:|:----:|
| 0.xx.xx | 测试版本 |