唯一可译码的判断且测试可用_第1页
唯一可译码的判断且测试可用_第2页
唯一可译码的判断且测试可用_第3页
唯一可译码的判断且测试可用_第4页
唯一可译码的判断且测试可用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <iostream.h>#include <stdlib.h>#include <string.h>struct stringschar *string; struct strings *next;struct strings Fstr, *Fh, *FP;/输出当前集合void outputstr(strings *str)docout<<str->string<<endl;str = str->next;while(str);cout<<endl;inline int MIN(int a,

2、 int b) return a>b?b:a; inline int MAX(int a, int b) return a>b?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)re

3、turn 0;return 1;/判断两个码字是否一个是另一个的前缀,如果是则生成后缀码void houzhui(char *CP,char *tempPtr)if (!strcmp(CP,tempPtr)cout<<"集合C和集合F中有相同码字:"<<endl<<CP<<endl<<"不是唯一可译码码组!"<<endl;exit(1);if (!strncmp(CP, tempPtr, MIN(length_a,length_b)struct strings *cp_temp;cp

4、_temp=new (struct strings);cp_temp->next=NULL;cp_temp->string=new charabs(length_a-length_b)+1; char *longstr;longstr=(length_a>length_b ? CP : tempPtr);/将长度长的码赋给longstr/取出后缀for (int k=MIN(length_a,length_b); k<MAX(length_a,length_b); k+)cp_temp->stringk - MIN(length_a,length_b)=longs

5、trk;cp_temp->stringabs(length_a-length_b)=NULL;/判断新生成的后缀码是否已在集合F里,不在则加入F集合if(comparing(Fh,cp_temp->string)FP->next=cp_temp;FP=FP->next;void main()/功能提示和程序初始化准备cout<<"tt唯一可译码的判断!n"<<endl;struct strings Cstr,*Ch, *CP,*tempPtr; Ch=&Cstr;CP=Ch; Fh=&Fstr;FP=Fh;ch

6、ar c="C :" Ch->string=new charstrlen(c); strcpy(Ch->string, c); Ch->next=NULL; char f="F :" Fh->string=new charstrlen(f); strcpy(Fh->string, f); Fh->next=NULL;/输入待检测码的个数int Cnum;cout<<"输入待检测码的个数:"cin>>Cnum;cout<<"输入待检测码"<

7、<endl;for(int i=0; i<Cnum; i+) cout<<i+1<<" :"char tempstr10;cin>>tempstr; CP->next=new (struct strings);CP=CP->next;CP->string=new charstrlen(tempstr) ;strcpy(CP->string, tempstr);CP->next = NULL; outputstr(Ch); CP=Ch; while(CP->next->next) CP=

8、CP->next;tempPtr=CP;dotempPtr=tempPtr->next;houzhui(CP->string,tempPtr->string);while(tempPtr->next); outputstr(Fh);struct strings *Fbegin,*Fend; Fend=Fh; while(1) if(Fend = FP)cout<<"是唯一可译码码组!"<<endl;exit(1);Fbegin=Fend;Fend=FP;CP=Ch;while(CP->next) CP=CP->next;tempPtr=Fbegin;for(;)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论