哈弗曼树实现

/*my_huffman*/

/*CCoder.Net*/
#include<stdio.h>
#include<malloc.h>
#define N 8

typedef struct node{
 int item;
 struct node* l;
 struct node* r;
}* link;

link *h;
int Nq = N;

link NODE(int item, link l, link r)
{
 link t = malloc(sizeof *t);
 t->l = l;
 t->r = r;
 t->item = item;

 return t;
}

void shif_up(int i)
{
 int j;
 while(i > 1)
 {
  j = i/2;
  if()
 }
}

void insert(link t)
{
 h[++Nq] = t;
 shif_up(Nq);
}

link delmin()
{
 swap(1, Nq–);
 shif_down(1,Nq);
 return h[Nq+1];
}

link creat_heap(int freq, int len)
{
 int i;
 for(i = 0; i < len; i++)
  h[i] = NODE(freq[i], NULL, NULL);
 for(i = N/2; i >= 0; i–)
  shif_down(i, N);}

void huffman(int freq[], int len)
{
 h = malloc(len * sizeof(link));
 
 creat_heap(h, freq, len);
 
 while(Nq > 1)
 {
  link t1 = delmin();
  link t2 = delmin();
  insert(NODE(t1->item + t2->item, t1, t2));
 }
}

int main(void)
{
 int freq[N] = {5, 29, 7, 8, 14, 23, 3, 11};
 huffman(freq, N);
 return 0;
}
http://www.ccoder.net/C-yuyantigao/shujujiegou-suanfa/54.html

    原文作者:哈夫曼树
    原文地址: https://blog.csdn.net/t1397018/article/details/6055137
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞