唯一可译码的判断唯一可译码的判断
#include
#include
#include
struct strings
{
char *string;
struct strings *next; };
struct strings Fstr, *Fh, *FP; //输出当前集合
void outputstr(strings *str) {
do
{
coutstringnext;
}while(str);
coutb?b:a; } inline int MAX(int a, int b) { re...
唯一可译码的判断
#include
#include
#include
struct strings
{
char *string;
struct strings *next; };
struct strings Fstr, *Fh, *FP; //输出当前集合
void outputstr(strings *str) {
do
{
cout<string<next;
}while(str);
cout<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,不在返回1 int 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中有相同码字:"<next=NULL;
cp_temp->string=new char[abs(length_a-length_b)+1];
char *longstr;
longstr=(length_a>length_b ? CP : tempPtr);//将长度长的码赋给longstr //取出后缀
for (int k=MIN(length_a,length_b); kstring[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唯一可译码的判断!\n"<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 Cnum;
cout<<"输入待检测码的个数:";
cin>>Cnum;
cout<<"输入待检测码"<>tempstr;
CP->next=new (struct strings);
CP=CP->next;
CP->string=new char[strlen(tempstr)] ;
strcpy(CP->string, tempstr);
CP->next = NULL;
}
outputstr(Ch);
CP=Ch;
while(CP->next->next)
{
CP=CP->next;
tempPtr=CP;
do
{
tempPtr=tempPtr->next;
houzhui(CP->string,tempPtr->string);
}while(tempPtr->next);
}
outputstr(Fh);
struct strings *Fbegin,*Fend;
Fend=Fh;
while(1)
{
if(Fend == FP)
{
cout<<"是唯一可译码码组!"<next)
{
CP=CP->next;
tempPtr=Fbegin;
for(;;)
{
tempPtr=tempPtr->next;
houzhui(CP->string,tempPtr->string);
if(tempPtr == Fend)
break;
}
}
outputstr(Fh);//输出F集合中全部元素
}
}
3.2.1 分析结果
本文档为【唯一可译码的判断】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。