哈夫曼樹的編碼與解碼

2021-08-30 21:31:14 字數 1195 閱讀 7642

#include

#include

#include

#include

using namespace std;

#define maxsize 30

typedef struct node

*treelink,link;

treelink createtree(int n)

else

}if (p == null)

}return link;

}void print(treelink h)

printf("\n");

}treelink hufftree(treelink link)

s= (treelink)malloc(sizeof(link));

s->data = p->data + q->data;

cout << "s->data" << s->data << endl;

s->next = null;

s->lchild = p;

s->rchild = q;

q = link;

p = q->next;

while (p != null)

else

if (q != null && s->data > q->data)}}

return s;

}void huffcode(treelink p)

stack[++i] = p;//指向當前結點的指標p入棧

p = p->lchild;//p指向p的左孩子

code[j++] = 0;//對應的左分支上編碼0

}//棧頂結點已經沒有左孩子或是其左子樹上的結點都已被訪問

q = null;

b = 1;//置已訪問過的標記

while (i >= 0 && b)//棧不空且棧頂結點的左子樹已經遍歷過

else//當前棧頂p有右子樹

}} while (i >= 0);//當棧非空時繼續遍歷

}void preorder(treelink head)

}void decodeing(string str, treelink head)

else

i++;

}cout << "解碼的值為:" << temp->value;

}int main()

return 0;

}

哈夫曼編碼與解碼

include include include include define maxnum 60typedef struct huffnode typedef struct huffcode huffnode ht maxnum 2 存放哈夫曼樹 huffcode hcd maxnum 存放ht陣列...

哈夫曼編碼解碼

簡單實現編碼解碼功能 列印哈夫曼樹形 該怎麼做呢 求教!實現初始化,建立huffman樹,並完成字元的編碼 之前解碼用for迴圈不能夠重新復位遍歷 while更好用 include stdio.h include string.h define n 10 待編碼字元的個數,即樹中葉結點的最大個數 d...

哈夫曼樹與哈夫曼編碼

在一般的資料結構的書中,樹的那章後面,著者一般都會介紹一下哈夫曼 huffman 樹和哈夫曼編碼。哈夫曼編碼是哈夫曼樹的乙個應用。哈夫曼編碼應用廣泛,如 jpeg中就應用了哈夫曼編碼。首先介紹什麼是哈夫曼樹。哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的...