开发工具:
文件大小: 32kb
下载次数: 0
上传时间: 2009-01-13
详细说明: 附:程序代码如下: #include #include #include #include #define MaxValue 10000 #define MaxBit 10 #define MaxN 100 typedef struct /*哈夫曼树的结点结构*/ { double weight; /*权值*/ int flag; /*标记*/ int parent; /*双亲结点下标*/ int leftChild; /*左孩子下标*/ int rightChild; /*右孩子下标*/ }HaffNode; typedef struct/*存放哈夫曼编码的数组元素结构*/ { int bit[MaxN]; /*数组*/ int start; /*编码的起始下标*/ double weight; /*字符的权值*/ }Code; void Haffman(double weight[], int n, Haff Node haffTree[])/*建立叶结点个数为n权值数组为weight的哈夫曼树haffTree*/ { int i,j,x1,x2; double m1,m2; for(i=0;i<2*n-1;i++) { if(istart=n-1; cd->weight=haffTree[i].weight; child=i; parent=haffTree[child].parent; while(parent != -1) { if(haffTree[parent].leftChild==child) cd->bit[cd->start]=0; else cd->bit[cd->start]=1; cd->start--; child=parent; parent=haffTree[child].parent; } for(j=cd->start+1;jbit[j]; haffCode[i].start=cd->start+1; haffCode[i].weight=cd->weight; } } void main(void) { int i,j,n; double weight[MaxN]; typedef struct { char ch; double weight; }CodeWeight; printf("请输入信源符号个数:\n"); scanf("%d",&n); if(n>MaxN) { printf("给出的n越界,修改MaxN值!\n"); exit(0); } HaffNode *myHaffTree=(HaffNode*)malloc(sizeof(HaffNode)*(2*n-1)); Code *myHaffCode=(Code*)malloc(sizeof(Code)*n); CodeWeight *myfuhao=(CodeWeight*)malloc(sizeof(CodeWeight)*n); printf("请输入%d个信源符号:\n",n); for(i=0;i<=n;i++) scanf("%c",&myfuhao[i].ch); printf("请输入对应信源符号的权重:\n"); for(i=0;i
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.