设为首页 加入收藏

TOP

Huffman编码C实现
2014-11-24 03:07:33 来源: 作者: 【 】 浏览:2
Tags:Huffman 编码 实现

Huffman编码:根据Huffman树进行编码的,用到的数据结构是二叉树。

typedef int elemtype;
typedef struct 
{
  elemtype weight;
  int parent,l_child,r_child;
} binarytree;

//2、构建最优二叉树
void CreateHuffman(int leafnum, binarytree *huffmantree)
{
    //leafnum个叶子,决定nodenum个结点数
	int nodenum=2*leafnum-1;
	huffmantree=(binarytree *)malloc(nodenum*sizeof(binarytree));   //0号单元也使用
	
	//leafnum个叶子,决定nodenum个结点数,也决定了(nodenum-1)个bit位编码
	char *huffmancode;
	huffmancode =(char *)malloc((nodenum-1)*sizeof(char));

	//huffmantree的初始化:叶子结点data权值手动输入,非叶子默认值都为0
	cout<<"请输入叶子权值:";
	int i;
	for(i=0;i>huffmantree[i].weight;
		}
		else
		{
		   huffmantree[i].weight=0;
		}
		huffmantree[i].parent=huffmantree[i].l_child=huffmantree[i].r_child=0;
	}

	int j; 
	//j从leafnum开始,指的是包含了新建子树的结点编号
	for(j=leafnum;j>leafnum;
   CreateHuffman( leafnum, T);
   while(1);
}

编译结果如下:

\

\

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[数据库]数据库存储层级结构数据 下一篇MongoDB权威指南第02章入门

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)
·请问微信4.0版本xwec (2025-12-24 22:48:42)
·电脑NVIDIA的文件夹 (2025-12-24 22:48:40)
·如何看待微信新版本 (2025-12-24 22:48:37)