信息论与编码【DOC精选】.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息论与编码【DOC精选】

信息论与编码实验报告学院:专业:班级:学号:姓名:许晓夏2015年1月4日试验一:唯一可译码判断准则1.实验目的: (1) 进一步掌握唯一可译码判断准则;(2)掌握C语言字符串处理程序的设计和调试技术;2.实验要求: (1)已知信源个数q,码字集合C ;(2)输入:任意的一个码。码字个数和每个具体的码字在运行时从键盘输入。(3)输出:判决(是唯一可译码/不是唯一可译码)。3.实验原理根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。算法:(1)、考察C 中所有的码字,若Wi是 Wj的前缀,则将对应的后缀作一个尾随后缀码放入集合Fi+1中;(2)、考察C和Fi俩个集合,若Wi ∈C是 Wj∈F的前缀或Wi ∈F是 Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中(3)、F=∪Fi即为码C的尾随后缀集合;(4)、若F中出现了C中的元素,算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素,则返回真。4实验结果及分析:源代码:#include iostream.h#include stdlib.h#include string.hstruct strings{ char *string; struct strings *next;};struct strings Fstr, *Fh, *FP;//输出当前集合void outputstr(strings *str){do{coutstr-stringendl;str = str-next;}while(str);coutendl;}inline int MIN(int a, int b){ return ab?b:a; }inline int MAX(int a, int b){ return ab?a:b;}#define length_a (strlen(CP))#define length_b (strlen(tempPtr))//判断一个码是否在一个码集合中,在则返回0,不在返回1int comparing(strings *st_string,char *code){while(st_string-next){st_string=st_string-next;if(!strcmp(st_string-string,code))return 0;}return 1;}//判断两个码字是否一个是另一个的前缀,如果是则生成后缀码void houzhui(char *CP,char *tempPtr){if (!strcmp(CP,tempPtr)){cout集合C和集合F中有相同码字:endlCPendl不是唯一可译码码组!endl;exit(1);}if (!strncmp(CP, tempPtr, MIN(length_a,length_b))){struct strings *cp_temp;cp_temp=new (struct strings);cp_temp-next=NULL;cp_temp-string=new char[abs(length_a-length_b)+1];char *longstr;longstr=(length_alength_b ? CP : tempPtr);//将长度长的码赋给longstr//取出后缀for (int k=MIN(length_a,length_b); kMAX(length_a,length_b); k++)cp_temp-string[k - MIN(length_a,length_b)]=longstr[k];cp_temp-string[abs(length_a-length_b)]=NULL;//判断新生成的后缀码是否已在集合F里,不在则加入F集合if(comparing(Fh,cp_temp-string)){FP-next=cp_temp;FP=FP-next;}}}void main(){//功能提示和程序初始化准备cout\t\t唯一可译码的判断!\nendl;struct strings Cstr, *Ch, *CP,*tempPtr; Ch=Cstr;CP=Ch; Fh=Fstr;FP=Fh;char c[]=C :; Ch-string=new char[strlen(c)]; strcpy(Ch-string, c); Ch-next=NULL; char f[]=F :; Fh-string=new char[strlen(f)]; strcpy(Fh-string, f); Fh-next=NULL;//输入待检测码的个数int

文档评论(0)

taotao0c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档