求哈夫曼编码的C++算法
我已经建好了哈夫曼树,但是编码过程有点问题,我写的函数编译能通过但运行时会出现“该引用内存不能read”求一个编码函数!其中结点是structHufNode{unsign...
我已经建好了哈夫曼树,但是编码过程有点问题,我写的函数编译能通过但运行时会出现“该引用内存不能read”
求一个编码函数!
其中结点是
struct HufNode
{
unsigned int weight;
char data;
HufNode *lChild;
HufNode *rChild;
HufNode *parent;
};
哈夫曼树是
class HuffmanTree
{
public:
HufNode *root
};
叶节点为 HuffmanTree leaf[i].root ,共n个
编码函数是这样的:
void HuffmanCode(int n,HuffmanTree *leaf)
{
HufNode *p;
for(int i=0;i<n;i++)
{
char *code;
code=(char *)malloc(10*sizeof(char));
static int j=0;
p=leaf[i].root;
while(p->parent!=NULL)
{
if(p->parent->lChild==p)
code[j]=0;
if(p->parent->rChild==p)
code[j]=1;
p=p->parent;
j++;
}
cout<<leaf[i].root->data<<"的编码为: ";
for(;j>=0;j--)
cout<<code[j];
cout<<endl;
delete []code;
}
}
其中leaf[i].root是指向已读入的叶节点的指针 展开
求一个编码函数!
其中结点是
struct HufNode
{
unsigned int weight;
char data;
HufNode *lChild;
HufNode *rChild;
HufNode *parent;
};
哈夫曼树是
class HuffmanTree
{
public:
HufNode *root
};
叶节点为 HuffmanTree leaf[i].root ,共n个
编码函数是这样的:
void HuffmanCode(int n,HuffmanTree *leaf)
{
HufNode *p;
for(int i=0;i<n;i++)
{
char *code;
code=(char *)malloc(10*sizeof(char));
static int j=0;
p=leaf[i].root;
while(p->parent!=NULL)
{
if(p->parent->lChild==p)
code[j]=0;
if(p->parent->rChild==p)
code[j]=1;
p=p->parent;
j++;
}
cout<<leaf[i].root->data<<"的编码为: ";
for(;j>=0;j--)
cout<<code[j];
cout<<endl;
delete []code;
}
}
其中leaf[i].root是指向已读入的叶节点的指针 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询