#include
struct strings {
char *string; struct strings *next; };
struct strings Fstr, *Fh, *FP;
//输出当前集合
void outputstr(strings *str) {
do {
cout<
}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); 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集合中全部元素 搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新医药卫生唯一可译码判决准则代码 全文阅读和word下载服务。
相关推荐: