考虑要反复的磨练前面的线性表存储结构,重复训练,我的目的不是非要用这些数据结构,而是锻炼代码的优雅风格,如诗一样优雅
- 将处理pcm数据的方式与数据结构结合
- 整理pcm中常见的存储方式和处理算法
- 构建和使用(如何创建结构体)
构建哈夫曼树时,首先需要确定树中结点的构成。由于哈夫曼树的构建是从叶子结点开始,不断地构建新的父结点,直至树根,所以结点中应包含指向父结点的指针。但是在使用哈夫曼树时是从树根开始,根据需求遍历树中的结点,因此每个结点需要有指向其左孩子和右孩子的指针。
- c 的实现
- 编码实现
- 解码实现
- 模仿360文件压缩解压管理器的实现
- 哈夫曼综合应用,想到什么结合什么,比如结合 链表 队列 栈
- 006-hfcompress.c 这个代码 2 days 看完,然后重复练习
- project-setenv-resolution/resolution.c 这个代码也要完善后,重复练习,目的是文本处理
- 文本处理 还要去分析pcm里的那个去掉录音无数据的算法
- Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序 这个程序实例写的比较经典,有1000行,需要一周重复练习
客户需求:
- 做个串口音频数据解压,蓝牙麦克风将16bit音频数据压缩成4bit,蓝牙主模块接收到将4bit数据,串口接入到开发版,需要开发版在底层解压成16bit PCM音频,保存为wav文件.
- 分析是如何将16bit PCM数据压缩成4bit, 如何还原
- 使用哈夫曼吗
- 通过这个需求掌握数据的压缩
文件的打开方式。这里打开文件一定要用二进制形式,"wb","rb".因为二进制打开和文本打开其实是有区别的。文本方式打开,会对‘\n’进行特殊处理,那如果这个字符本身就是'\n'.这就会出现问题,所以使用二进制打开,特点:不进行任何处理,是什么就是什么。 哈夫曼编码的本质是找出海量数据的特征,如出现的次数,以此为权重,进行编码 ---这是我说的。
8bit数据 转换为 16bit数据的四种方法
哈夫曼树(赫夫曼树、最优树)及C语言实现
哈夫曼树的基本构建与操作
哈夫曼算法(haffman)实现压缩和解压缩-C语言实现
哈夫曼编码与解码(C语言实现)
优化的三叉哈夫曼树
哈夫曼树与哈夫曼编码(C语言代码实现)
哈夫曼树以及文件压缩的实现
使用libjpeg进行图片压缩(哈夫曼算法,无损压缩)(https://github.com/home-coder/CompressImageByHuffman)
Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序
教程目录
1 数据结构概述
2 线性表
3 栈和队列
4 字符串
5 数组和广义表
6 树
7 图
8 动态内存管理
9 查找算法
10 排序算法
11 外部排序算法
阅读:5,779 作者:严长生
数据结构与算法教程,数据结构C语言版教程!
——通俗易懂、深入浅出、中文免费、完整示例、基于C语言
这套教程不仅讲解了基本的数据结构,还讲解了经典的算法,并把它们付诸实践,解决生活中的实际问题,例如停车场管理系统、迷宫游戏、字符过滤系统等。
这套教程最大的特点是通俗易懂,深入浅出,摒弃教条主义,不做“学院派”,以“生动有趣”的笔风来讲解每个知识点。
1.数据结构概述
2.算法的时间复杂度和空间复杂
1.线性表的概念
2.顺序表,似曾相识哦!
3.链表,So easy!
4.静态链表,顺序表和链表的完美融合!
5.循环链表带你走进约瑟夫环!
6.双向(循环)链表,绝对让你眼前一亮!
7.「项目实践」俄罗斯轮盘赌小游戏
1.栈(Stack),奇葩的存在!
2.「项目实践」进制转换器
3.「项目实践」括号匹配
4.队列(Queue)
5.「项目实践」变态的停车场管理系统
1.字符串的存储结构
2.BF算法(普通模式匹配算法)
3.KMP算法(快速模式匹配算法)
4.「项目实践」字符过滤系统
1.数据结构让你对数组有了新的认识!
2.矩阵的压缩存储算法
3.矩阵转置
4.矩阵乘法
5.矩阵加法
6.广义表的定义和存储结构
7.广义表的长度和深度
8.复制广义表
1.数据结构中的树
2.二叉树的存储结构
3.二叉树的三种遍历方式(递归实现)
4.二叉树的三种遍历方式(非递归方式)
5.二叉树的层次遍历
6.线索二叉树的构建与遍历
7.线索二叉树的遍历也可以是双向的
8.树的三种表示方法
9.哈夫曼树
10.回溯法轻松解决八皇后问题
11.n个结点可以构造这么多种树!
12.「项目实践」移动迷宫小游戏(初级版)
1.数据结构中的图
2.图的顺序存储结构
3.图的 3 种链式存储结构
4.图的两种遍历方式:深搜和广搜
5.深度优先生成树和广度优先生成树
6.普里姆算法求最小生成树
7.克鲁斯卡尔算法求最小生成树
8.重连通图
9.拓扑排序算法
10.关键路径
11.求最短路径(迪杰斯特拉算法)
12.求最短路径(弗洛伊德算法)
13.「项目实践」移动迷宫小游戏(升级版)
1.动态内存管理
2.动态内存管理之边界标识法
3.动态内存管理之伙伴系统
4.系统垃圾回收机制
5.内存碎片可以这样处理!
1.一分钟了解什么是查找表
2.静态查找之顺序查找算法
3.折半查找(二分查找)
4.分块查找算法(索引顺序查找)
5.静态树表查找算法
6.二叉排序树(二叉查找树)
7.平衡二叉树(AVL树)
8.红黑树算法
9.B-树
10.B+树
11.键树(数字查找树)
12.什么是哈希表
13.哈希查找算法
1.插入排序算法
2.折半插入排序算法
3.2-路插入排序算法
4.表插入排序算法
5.希尔排序算法
6.起泡排序算法
7.快速排序算法
8.三种选择排序算法
9.归并排序算法
10.基数排序算法
1.外部排序算法,就这么简单!
2.多路平衡归并排序算法,没你想的这么神秘!
3.置换选择排序算法,一点也不烧脑!
4.最佳归并树,一看就会!