- 博客(11)
- 收藏
- 关注
原创 哈夫曼树--(根据字符表)生成哈夫曼树并编码
哈夫曼树是完全二叉树,也是最优二叉树。哈夫曼编码的最短,用于(ZIP、JPEG、MP3 等格式)为什么可以压缩?因为不同字符出现的频率不同,便可以,使得高频字符的编码短、低频字符的编码长,从而逼近信息熵给出的理论最小平均长度。用于量化信息的或,单位为。即不会出现一个字符的编码是另一个字符的前缀。哈夫曼编码是一种前缀编码,确保了解码时不会出现歧义。为什么可以保证解码的唯一性?因为哈夫曼树中,只有存储字符,任何字符的编码都不会是另一个字符路径的子路径。
2025-05-23 00:28:05
420
原创 链队列--初始化,入队,出队
1. 用链表实现的队列,而队列可以满足先进先出的结构。2. 链队列由一个个节点组成,每个节点包含一个数据域一个指向下一个节点的指针域。需要front和rear指针分别管理队头和队尾,修改头尾指针即可进行出队入队操作,保证时间复杂度为O(1)。3. 入队时尾指针后移,出队时头指针后移。4. 判断队列是否为空的条件: front == rear;front->next == NULL(带头节点)5. 顺序队列--数组实现,但链队列更灵活。
2025-04-25 21:43:15
247
原创 汉诺塔问题
汉诺塔(Hanoi Tower)是一个经典的数学问题。有三根柱子,分别为 A、B、C。A 柱子上有若干个大小不一的盘子,盘子从下到上依次变小。
2025-04-21 18:00:56
406
2
原创 静态链表--定义、初始化、插入、删除
静态链表是一种特殊的线性表,它使用数组来模拟链表的结构。2. 静态链表中,每个数组元素包含两个部分:一个是数据域,用于存储数据元素;另一个是指针域,用于存储下一个元素在数组中的位置(下标)。3. 静态链表使用数组预先分配一块固定大小的存储空间,存储空间的大小在创建时就确定,无法动态扩展或收缩。4.静态链表的存储空间是连续的,因为它是基于数组存储的。这种连续性使得静态链表在某些情况下(如缓存友好性)可能具有更好的性能,因为连续存储的数据更容易被缓存命中。
2025-04-15 09:22:57
307
原创 双向链表--定义,初始化,插入,删除
3. 从不同角度认识双向链表-----性能(插入、删除时间复杂度为O(1) ,在处理大量数据时,双向链表的插入和删除效率优势明显。)、应用(文本编辑、历史记录管理)双向链表是一种重要的链式存储结构。相较单链表和数组,它结合了链式存储的特点,同时提供了更灵活的遍历方向。2. 双向链表的特性(如可以向前和向后遍历)有助于构建跳表的多级索引结构。
2025-04-14 13:01:50
241
原创 学习顺序表的操作--插入,打印,读取,删除,修改
一.一.beginning:二.初始化顺序表:顺序表插入元素:插入检查:三.删除指定数据:删除检查:one.按位查找:two.按值查找:
2025-04-01 00:46:59
153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人