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