文件名称:
无损压缩、解压缩小程序Jcompress.zip
开发工具:
文件大小: 30kb
下载次数: 0
上传时间: 2019-07-19
详细说明: Jcompress 是一款基于哈夫曼编码和最小堆的无损压缩、解压缩小程序,支持任何格式的文件的压缩与解压缩。Jcompress 的源代码位于 Utility 的 repository 分类下的 Jcompress 目录,后续会在 Utility 下面增加其他一些实用的小程序,比如基于 socket 的文件断点下载小程序等等。Jcompress代码实现1. 最小堆代码实现最小堆排序算法基本上是按照<数据结构>严蔚敏版的算法来实现的,其具体功能这里不再赘述,仅列出代码,读者可以参考课本自行分析之。首先是heap_min_adjust,也就是调整堆,代码如下所示:int heap_min_adjust(HuffmanNode **huffman_node _array, long data_start, long data_end){ /** ** check error for argument */ if(huffman_node_array==NULL || data_start<0 || data_end<0 || data_enddata_8bit_count)>((huffman_node_array[cur 1])->data_8bit_count)){ cur =1; } } if((current_data_tobe_adjust->data_8bit_count)<=((huffman_node_array[cur])->data_8bit_count)) break; huffman_node_array[current_indexof_data]=huffman_node_array[cur]; current_indexof_data=cur; } huffman_node_array[current_indexof_data]=current_data_tobe_adjust; /** ** return 1 means everything is ok */ return 1; }接下来是heap_min_construct()的代码,此函数是通过不断的调用上面的调整堆的函数来达到堆排序的目的。int heap_min_construct(HuffmanNode **huffman_node_array, long array_size){ /** valid data start from index 1 not 0 */ /** ** check error for argument */ if(huffman_node_array==NULL || array_size<=0 || array_size>256){ printf("heap_min_construct: argument error\n"); exit(0); } for(long HeapRoot=array_size/2; HeapRoot>=1;HeapRoot--){ heap_min_adjust(huffman_node_array,HeapRoot,array_size); } return 1; }最后是heap_min_get2min()函数。int heap_min_get2min(HuffmanNode **huffman_node_array, HuffmanNode **min_first, HuffmanNode **min_second, long *heap_size){ /** ** check argument **/ if(huffman_node_array==NULL){ printf("heap_min_get2min: argument error\n"); exit(0); } *min_first=huffman_node_array[1]; huffman_node_array[1]=huffman_node_array[*heap_size]; (*heap_size)-=1; /** after we get the min data, we should again adjust the heap to make a min-heap */ heap_min_adjust(huffman_node_array,1,*heap_size); *min_second=huffman_node_array[1]; huffman_node_array[1]=huffman_node_array[*heap_size]; (*heap_size)-=1; /** the same as above*/ if(*heap_size>0){ heap_min_adjust(huffman_node_array,1,*heap_size); } return 1; } 标签:Jcompress
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
相关搜索: