/*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