栈
先进后出,添加元素直接memcpy 到对应数组位置就可以,top是栈中存储的元素个数,最后一个元素下标为top-1; 删除元素时直接top--; 后面添加进入的数据会覆盖原来在栈上被删除的数据。
main.c符号匹配
链栈
main.c
队列函数实现
注意判满条件,多出来一个位置用于区别 空和满两种状态,所以开了10个空间只能存储9和结构体数,且所有的位置都是循环移动的,无固定位置。
线程池
读写文件(自己写)
顺序队列完成
标准版、链式队列
树
用队列实现树的层序遍历输出
gdb使用
赫夫曼树
大话数据书 --二叉树内有
哈希表
哈希表的存储和查找,体现的是一种思想。
哈希表(Hash Table),也称为散列表,是一种数据结构,它提供了快速的数据插入、删除和查找功能。它通过使用哈希函数将键(Key)映射到表中一个位置来访问记录,从而实现高效的数据检索。
以下是哈希表的一些关键特点:
1. **哈希函数**:哈希表使用一个函数(称为哈希函数)来计算数据项的存储位置。这个函数将键通过某种算法转换为表中的一个索引值。
2. **键值对存储**:哈希表存储数据的方式是键值对(Key-Value Pairs),其中键是通过哈希函数进行映射的,而值是存储的数据。
3. **冲突解决**:由于不同的键可能通过哈希函数映射到同一个位置,这种现象称为冲突。哈希表需要一种机制来解决冲突,常见的方法有开放寻址法(Linear Probing、Quadratic Probing、Double Hashing)、链地址法(Separate Chaining)等。
4. **动态扩容**:为了保持操作的效率,哈希表通常在达到一定负载因子(已存储元素数量与哈希表容量的比值)时进行扩容,这涉及到重新计算所有元素的位置并迁移到新的更大的哈希表中。
5. **平均时间复杂度**:理想情况下,哈希表的插入、删除和查找操作的平均时间复杂度为O(1)。但在最坏的情况下,比如所有元素都映射到同一个位置,时间复杂度可能退化到O(n)。
6. **空间效率**:哈希表通常需要预分配一个足够大的内部数组来存储数据,这可能会导致空间的浪费,尤其是在负载因子较低的情况下。
哈希表广泛应用于数据库、缓存系统、字典和许多其他需要快速查找的场景中。