源程序如下请大家帮我看看#ifndef HUFFMANTREE_H
#define HUFFMANTREE_H
#include <afx.h>typedef struct HuffmanTreeNode
{
DWORD dwWeight;
DWORD dwParent;
DWORD lChild;
DWORD rChild;
}HuffmanTreeNode, *pHuffmanTreeNode;
typedef char ** Huff;class HuffmanTreeCode
{
public:
HuffmanTreeCode(); ~HuffmanTreeCode(); void InputFrequency(); void CreateHuffmanTree(); Huff DoCode(); void DeCode();
private: pHuffmanTreeNode HuffTree;

Huff HuffCode; char SourceString[5];

int  iFrequency[5];    int NodeData[5]; int iMinIndex_1; int iMinIndex_2; void SelectMin(HuffmanTreeNode *pHuffTree, int iNode, int *plChild, int *prChild);};#endif
================================================================
#include <iostream.h>
#include <string.h>
#include <process.h>
#include "huffmantree.h"
HuffmanTreeCode::HuffmanTreeCode()
{
ZeroMemory(SourceString,5);

strcpy(SourceString, "abcde"); for (int i=0; i<5; i++)
{
iFrequency[i] = 0;
NodeData[i] = 0;
}
}HuffmanTreeCode::~HuffmanTreeCode()
{}
void HuffmanTreeCode::InputFrequency()
{
system("cls"); cout << "\n\n\t       *********** Huffman 编码测试程序***********\n\n\n"<<endl;
cout << "\t\t      请输入a-e 5个字符出现的频率\n\n"<<endl;
for (int i=0; i<5; i++)
{
cout << "\t\t     请输入第 "<<i+1<<" 个字符 "<<SourceString[i]<<" 的出现频率: "; cin >> iFrequency[i];

NodeData[i] = iFrequency[i];
}
}void HuffmanTreeCode::CreateHuffmanTree()
{
HuffTree = (HuffmanTreeNode*)new(HuffmanTreeNode[20]); for (int i=1; i<=5; i++)
{
HuffTree[i].dwWeight = NodeData[i-1];
HuffTree[i].dwParent = 0;
HuffTree[i].lChild = 0;
HuffTree[i].rChild = 0;
}
for (; i<=19; i++)
{
HuffTree[i].dwParent = 0;
HuffTree[i].dwWeight = 0;
HuffTree[i].lChild = 0;
HuffTree[i].rChild = 0;
} iMinIndex_1 = -1;
iMinIndex_2 = -1; for (i=5+1; i<=9; i++)
{
SelectMin(HuffTree,i-1,&iMinIndex_1,&iMinIndex_2);
HuffTree[iMinIndex_1].dwParent = i;
HuffTree[iMinIndex_2].dwParent = i;
HuffTree[i].lChild = iMinIndex_1;
HuffTree[i].rChild = iMinIndex_2;
HuffTree[i].dwWeight = HuffTree[iMinIndex_1].dwWeight + HuffTree[iMinIndex_2].dwWeight;
} return;
}void HuffmanTreeCode::SelectMin(HuffmanTreeNode *pHuffTree, int iNode, int *plChild, int *prChild)
{
int iMinValue_1 = -1; for (int i=1; i<=iNode; i++)
{
if (pHuffTree[i].dwParent == 0)
{
if (iMinValue_1 > pHuffTree[i].dwWeight)
{
iMinValue_1 = pHuffTree[i].dwWeight;
*plChild = i;
}
}
} int iMinValue_2=-1; for ( i=1; i<=iNode; i++)
{
if ((pHuffTree[i].dwParent == 0) && (i!=*plChild))
{
if (iMinValue_2 > pHuffTree[i].dwWeight)
{
iMinValue_2 = pHuffTree[i].dwWeight;
*prChild = i;
}
}
}

return;
}Huff HuffmanTreeCode::DoCode()
{
HuffCode = (Huff)new(char*[sizeof(char *)*6]);

char *Code;
Code = (char *)new(char[5]); ZeroMemory(Code,5); int iStart; for (int i=1; i<=5; i++)
{
iStart = 4; for (int c=i,int f=HuffTree[i].dwParent; f!=0; c=f,f=HuffTree[f].dwParent)
{
if (HuffTree[f].lChild == c) 
{
Code[--iStart] =0;
}
else
{
Code[--iStart] ='1';
} HuffCode[i] = (char *)new(char[5-iStart]);
strcpy(HuffCode[i],&Code[iStart]);
}
}

delete Code; return HuffCode;
}void HuffmanTreeCode::DeCode()
{
}#include <iostream.h>
#include "huffmantree.h"void main()
{
HuffmanTreeCode hf;
hf.InputFrequency();
hf.CreateHuffmanTree();
Huff HuffCode = hf.DoCode();
for (int i=1; i<=5; i++)
{
cout<<"****"<<HuffCode[i]<<endl;
}
}
请帮忙看看,谢谢