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