#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中就應用了哈夫曼編碼。首先介紹什麼是哈夫曼樹。哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的...