哈夫曼树(huffman)--最优二叉树的编码实现

最优二叉树,真可谓二叉树中的精品,下面就记录下之前总结的关于最优二叉树的压缩与解压缩编码的实现。希望再回首时,记忆犹存:


#ifndef _HEAD_H_
#define _HEAD_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 4
#define MAX 100

#if 0
#define A 0
#define B 1
#define C 2
#define D 3
#else
enum {A,B,C,D};
#endif

//哈夫曼树结点类型
typedef struct huffman_node
{
    //结点权值,字符出现的频率作为权值
    int w;
    //结点的字符,只有叶结点有字符有意义
    char c;
    //结点的编码
    char code[10];
    struct huffman_node *lchild;
    struct huffman_node *rchild;
}huffnode_t;

//链表结点中存储的数据元素类型(哈夫曼树的结点的首地址)
typedef huffnode_t *data_t;

//链表结点的类型
typedef struct node
{
    data_t data;
    struct node *next;
}linknode_t;

//链式队列队列头的类型
typedef struct 
{
    linknode_t *front;
    linknode_t *rear; 
<span style="font-family: Arial, Helvetica, sans-serif;">}linkqueue_t;</span>
//链式队列操作
extern linkqueue_t *create_empty_linkqueue();//创建空的队列
extern int is_emtpy_linkqueue(linkqueue_t *q);//判空队列
extern int enter_linkqueue(linkqueue_t *q,data_t data);//入队
extern data_t delete_linkqueue(linkqueue_t *q);//出队

#endif</span></strong>
<span style="font-size:18px;"><strong>
</strong></span>
<span style="font-size:18px;"><strong>
</strong></span>
<span style="font-size:18px;"><strong>// 
 //再来把队列的各种寒暑表实现下 
#include "head.h"

//队列的创建
linkqueue_t *create_empty_linkqueue()
{
    linknode_t *head = NULL;
    linkqueue_t *q = NULL;

    head = (linknode_t *)malloc(sizeof(linknode_t));
    head->next = 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值