数据库

 首页 > 数据库 > MySql > Huffman编码C实现

Huffman编码C实现

分享到:
【字体:
导读:
         摘要:typedef int elemtype;typedef struct { elemtype weight; int parent,l_child,r_child;} binarytree;2、构建最优二叉树void CreateHuffman(int leafnum, binarytree *huffmantre...

Huffman编码C实现

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);
}

编译结果如下:








Huffman编码C实现
分享到:
锋利的SQL-基于窗口的排名计算
锋利的SQL-基于窗口的排名计算在SQL Server中,窗口被定义为用户指定的一组行。 之所以要提出窗口这个概念,因为这种基于窗口或分区的重新计算在实际工作应用范围比较广泛。例如,假设我们要对每个班级中的学生按成绩进行排序,在对第1个班级排序完成后,对第2个班级进行排序时编号需要重新从1开始。在SQL Server 2005之前...
oracle ocp知识点
oracle ocp知识点1.如何确定数据库是否启动 su - oracle ps -ef |grep ora_|head -2 两种关系数据库是ora或者是自动存储管理的asm开头的, 查看进程可以知道数据库实例至少已经启动,但是数据库是否挂载,是否打开,不得而知 asm crs_stat -t updb.db online srvctl status database -d updb db sqlplus  -s / as sysdba s...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……