唯一可译码判决准则代码

更新时间:2023-09-20 06:28:01 阅读量: 医药卫生 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#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<

}

inline int MIN(int a, 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,不在返回1 int comparing(strings *st_string,char *code) { }

while(st_string->next) { } return 1;

st_string=st_string->next;

if(!strcmp(st_string->string,code))

return 0;

//判断两个码字是否一个是另一个的前缀,如果是则生成后缀码 void houzhui(char *CP,char *tempPtr) { if (!strcmp(CP,tempPtr)) { cout<<\集合C和集合F中有相同码字:\ }

}

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_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<<\唯一可译码的判断!\\n\

struct strings Cstr, *Ch, *CP,*tempPtr; Ch=&Cstr; CP=Ch; Fh=&Fstr; FP=Fh;

char c[]=\

Ch->string=new char[strlen(c)]; strcpy(Ch->string, c); Ch->next=NULL; char f[]=\

Fh->string=new char[strlen(f)]; strcpy(Fh->string, f); Fh->next=NULL;

//输入待检测码的个数

int Cnum;

cout<<\输入待检测码的个数:\cin>>Cnum;

cout<<\输入待检测码\

for(int i=0; i

char tempstr[10]; cin>>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<<\是唯一可译码码组!\ }

Fbegin=Fend; Fend=FP; CP=Ch; while(CP->next)

exit(1);

{

CP=CP->next; } }

tempPtr=Fbegin; for(;;) {

tempPtr=tempPtr->next;

houzhui(CP->string,tempPtr->string); if(tempPtr == Fend)

break;

} }

outputstr(Fh);//输出F集合中全部元素

本文来源:https://www.bwwdw.com/article/idgh.html

Top