CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

哈夫曼树怎样保存?

楼主laijunchen(来俊臣)2003-06-03 09:46:54 在 C/C++ / C语言 提问

我建立一个结构。  
  struct   leaf{  
          int     cChar;  
          long   weight;  
  }  
   
  最多时有256个结构体变量。  
   
  每一个结构变量有8个字节。  
   
  原来我建立的结构体是这样的  
  struct   leaf{  
          char     cChar;  
          long   weight;  
  }  
  但是我用sizeof(struct   leaf)返回的是8,我担心写到文件后会有错,所以将char类型改成int类型。  
   
   
  我看了N遍jpeg图片的存储格式,硬是没看懂,  
  大家帮我出下主意呀。  
  你们写的哈夫曼树是怎样存的? 问题点数:0、回复次数:5Top

1 楼steedhorse(晨星)回复于 2003-06-03 09:54:01 得分 0

这是有余“字对齐”机制造成的。用的时候的确需要小心。  
  其实不用整数也无所谓,只要你分别保存两个分量。  
  Top

2 楼steedhorse(晨星)回复于 2003-06-03 09:58:08 得分 0

我的意思是说,对于你原来的leaf类型,如果有变量。  
  struct   leaf   lf;  
  则sizeof(lf)==8,但sizeof(lf.cChar)和sizeof(lf.weight)分别等于1和4(Win32系统中)。Top

3 楼laijunchen(来俊臣)回复于 2003-06-03 10:07:16 得分 0

不知大家有没有好的保存哈夫曼树的方法?  
   
  或者请看懂jpeg哈夫曼树存储方法的朋友给我说说怎样存。  
   
  因为像我这样存的话浪费了很多空间呀。Top

4 楼witcheese(狗餅)回复于 2003-06-03 10:08:58 得分 0

@@Top

5 楼cloudysunny(蓝天下的雨云)回复于 2003-06-03 12:07:49 得分 0

原来我建立的结构体是这样的  
  struct   leaf{  
          char     cChar;  
          long   weight;  
  }  
  但是我用sizeof(struct   leaf)返回的是8,我担心写到文件后会有错,所以将char类型改成int类型。  
  因为你没有声明使用紧凑模式,所有编译器会优化存储空间,让读取效率更高。  
  如果你想sizeof(leaf)=5,则需这样声明:  
  //这段是声明紧凑模式--可适用于WINDOWS、UNIX、LUNIX  
  #ifdef   WIN32  
  #pragma   pack(push)  
  #pragma   pack(1)  
  #endif  
  #ifdef   UNIX  
  #pragma   options   align=packed  
  #endif  
  #ifdef   LINUX  
  #pragma   pack(1)  
  #endif  
   
  struct   leaf{  
          int     cChar;  
          long   weight;  
  }  
   
  //这段是取消紧凑模式,这样下面的定义则可以采用优化的存储,提高效率。  
  #ifdef   WIN32  
  #pragma   pack(pop)  
  #endif  
  #ifdef   UNIX  
  #pragma   options   align=reset  
  #endif  
  #ifdef   LINUX  
  #pragma   pack()  
  #endif  
  ....Top

相关问题

  • 关于哈夫曼树~~~~~
  • 哈夫曼树的问题!!
  • 请问: 如何保存树形目录
  • 结构树的节点怎么保存?
  • 要把treeView里的内容保存在哈希表里,怎么保存?
  • 什么是哈夫曼最优树?
  • 哈夫曼树的算法编码
  • 500分求哈夫曼树的算法
  • 用Table有办法有效的保存树形结构吗?
  • ######简单问题:如何保存一个树??????????????

关键词

  • win32
  • 结构
  • 模式
  • unix
  • cchar
  • 保存
  • pragma pack
  • ifdef
  • 变量
  • 存储

得分解答快速导航

  • 帖主:laijunchen

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo