关于数据结构中定义结构体的问题(萌新小白)

real_metrix 2019-06-27 07:50:18
代码如下:
typedef struct CSNode
{
TElemType data;
struct CSNode *firstchild,*rightsib;
}CSNode,*CSTree;

问题:在很多数据结构的定义的代码中,总是出现定义两个结构体变量(如该代码中的 CSNode,*CSTree),一个是普通结构体变量,一个是结构体指针,但是看很多代码都是只用了结构体指针(*CSTree)来完成其他的操作,那还定义 CSNode 干什么呢?
...全文
362 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pr0gram 2019-06-30
  • 打赏
  • 举报
回复
为了让小白理解概念!
Italink 2019-06-27
  • 打赏
  • 举报
回复
为了好看,让结构看起来更直观一点,
CSNode *tree;
CSTree tree;
可以对比一下两种方式
636f6c696e 2019-06-27
  • 打赏
  • 举报
回复
请考虑下可扩展性,设计数据结构的人和使用数据结构的人不一定是同一个,况且定义CSNode有没有什么损失
【资源说明】 基于C++、文件操作和Huffman算法实现图片压缩源码+使用说明+详细注释+sln解决方案.zip ——使用C++、文件操作和Huffman算法实现“图片压缩程序”。 ## 1. 核心知识 (1) 树的存储结构 (2) 二叉树的三种遍历方法 (3) Huffman树、Huffman编码算法 ## 2. 功能要求 1. 针对一幅BMP格式的图片文件,统计256种不同字节的重复次数,以每种字节重复次数作为权值,构造一颗有256个叶子节点的哈夫曼二叉树。 2. 利用上述哈夫曼树产生的哈夫曼编码对图片文件进行压缩。 3. 压缩后的文件与原图片文件同名,加上后缀.huf(保留原后缀),如pic.bmp 压缩后pic.bmp.huf ## 3.分析与设计 使用Huffman算法实现图片压缩程序,可分为6个步骤。 (1)创建工程 创建HuffmanCompressCPro工程,定义入口函数int main(); (2)读取原文件 读取文件,统计256种字节重复的次数; (3)生成Huffman树 根据上一步统计的结果,构建Huffman树; (4)生成Huffman编码 遍历Huffman树,记录256个叶子节点的路径,生成Huffman编码; (5)压缩编码 使用Huffman编码,对原文件的字节重编码,获得压缩后的文件数据; (6)保存文件 将编码过的数据,保存到文件“Pic.bmp.huf”。 ## 4. 数据结构的设计 1.记录统计256种不同字节的重复次数即权值使用整型数组: > unsigned int weight[256]; 2.二叉树的存储结构。使用结构存储节点,使用数组存储树的节点,使用静态二叉链表方式存储二叉树。 ```c++ struct HTNode{ int weight; int parent; int lchild; int rchild; }; typedef HTNode *HuffmanTree; ``` 3.Huffman编码存储结构定义一个二维数组: > char HufCode[256][]; 因考虑每个字节的Huffman编码长度不一样,可使用字符串指针数组: > typedef char \*\*HuffmanCode; 4.压缩文件的算法的数据结构: 为正确解压文件,除了要保存原文件长度外,还要保存原文件256种字节重复的次数,即权值。定义一个文件头,保存相关的信息: ```c++ struct HEAD { char type[4]; //文件类型 int length; //原文件的长度 char weight[256]; //权值 } ``` 压缩文件时,定义一个内存缓冲区: > char \*pBuffer; //其大小视原文件压缩后的大小 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧