C++不是世界上最好的语言(【狗头保命🐶】),但是我很喜欢它。
这个项目记录了我用c++实现的一些小玩意儿。
- 命令行日历小程序 (c)
- 动态数组Vector (c)
- 哈希表HashMap (c)
- 基于链表的队列Queue
- 基于循环数组的队列Queue
- 基于链表的栈Stack
- 基于动态数组的栈Stack
- 表达式求值小程序
- 双向链表
- 二叉搜索树
- 红黑树
- B树
- B+树
- 跳表
- 封装线程池 (c++)
- 封装string类(c++)
- C++ Primer上的简单词频统计(c++)
功能说明:
- 输入一个年份数字就可以查看这一年的全年日历;
- 如果查询年是本年,当天的日期会标红。
实现原理:
定义一个结构体类型,在结构体中用指针指向一个在堆空间开辟的一块内存。
功能说明:
- 自定义初始容量和负载因子;
- 当键值对的个数与容量比值超过负载因子时,自动扩容;
- 借鉴Java8的HashMap部分扩容逻辑,定义了单独的桶结构体用于记录hash值,以及2倍扩容,减少了hash运算和移位的开销。
实现原理: 采用动态数组加链表的方式实现(之后撸完红黑树,增加动态数组+链表+红黑树的版本)。
功能说明:
- 创建队列
- 销毁队列
- 入队
- 出队
- 查看队头
- 判空
实现原理: 基于单向链表实现,从尾部插入,从头部取出。
功能说明:
实现原理: 基于动态数组实现栈;比起用链表方式,随机访问效率高且不需要额外空间存储指针,但重分配内存那一刻可能涉及巨大的内存开销,拖慢整体栈的效率。
功能说明:
- 在命令行输入一串运算表达式,计算得到结果;
功能说明:
功能说明: