毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

Huffman编译码程序的分析与设计-源代码+流程图 第7页

更新时间:2014-5-14:  来源:毕业论文
表3-2 哈夫曼算法
bits Start ch

typedef struct cnode
{
 char bits[leafnum+1];
 int start;
 char ch;
}hufcode;
hufcode code[leafnum];
void creatcodehuffman(hufcode code[],huftree tree[])


3.2.2 哈夫曼译码
在接收端将受到的二进制数0、1序列转换成对应的字符序列,这就是译码。哈弗曼译码就是先输入要译码的字符串的二进制编码,然后从哈夫曼树的根结点出发,对二进制编码按照二进制位串中的0和1 确定是进入左分支还是右分支;若编码为0,则进入结点的左孩子,否则进入结点的右孩子;一旦到达叶结点,就译出该叶子结点所代表的字符;若字符串没有结束,则重新输入一串新的二进制编码,回到根结点继续进行译码,知道二进制字符串全部译完为止。用哈夫曼树得到的译码就是哈弗曼译码。其实现算法如下:
void transhufcode(hufcode code[],huftree tree[])
{
 int m,k,f;
 char s[200]={'\0'};
 char c;
 std::cout<<"请输入二进制编码(以'*'结束)"<<std::endl;
 
 k=1;
 while((c=getchar())!='*')
 {
  s[k]=c;
  
  k++;
 }
 m=k;
 k=1;
 std::cout<<"输出哈夫曼译码:"<<std::endl;
 while(k<m)
 { Excel在计算机审计中的应用研究现状问题及应对措施
  f=hufnum-1;
  while(tree[f].lchild!=0)
  {本文来自辣.文,论-文·网原文请找腾讯324-9114
   if(s[k]=='0')
    f=tree[f].lchild;
   if(s[k]=='1')
    f=tree[f].rchild;
   k++;
  }
  std::cout<<code[f].ch;
 }
 std::cout<<std::endl;
}
3.3 文件流
从C语言的角度看,文件实际上是一个存储在外存中的由一串连续字符(字节)构成的任意信息序列,即字符流。C程序需要按照特定的规则去访问这个序列。在c语言中,文件的打开操作是通过fopen()函数实现此函数在声明“stdio.h”中,函数原型如下:FILE *fopen(const *char filename,const char *mode);函数返回值为FILE类型的指针。如果运行成功,fopen返回文件的地址,否则返回值为NULL。其中mode为控制文件的打开方式的参数。根据不同需求,文件打开方式有如下模式:只读模式,只写模式,追加模式,读写模式。在哈夫曼编码系统中,程序采用的是读写模式。文件的关闭是通过fclose()函数来实现的。此函数在声明“stdio.h”中的函数原型为:int fclose(FILE *fp);函数返回值为int类型,如果为0,则表示文件关闭成功,否则表示失败。字符的读写主要用putc(),getc()函数。在写入文件的过程中,是手动一个一个字符输入的,所以在其中利用一个for循环,输入要写入文件的字符串,直到出现结束符号“*”,则要求写入文件的字符串写入完成,在对应地区的存盘文件中可以打开文件查阅。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页

Huffman编译码程序的分析与设计-源代码+流程图 第7页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。