永发信息网

什么是 唯一可译码

答案:2  悬赏:40  手机版
解决时间 2021-03-09 05:16
什么是 唯一可译码
最佳答案
将码所有可能的未遂后缀组成一个集合,当且仅当集合中没有包含任意码字时,码为唯一可译码。
程序代码:

#include
#include
#include
struct strings
{
char *string;
struct strings *next;
};
struct strings Fstr, *Fh, *FP;
void outputstr(strings *str)
{
do
{
cout<string< str = str->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)
{
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中有相同码字:"< < <<"不是唯一可译码码组!"< 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_a>length_b ? CP : tempPtr);//将长度长的码赋给longstr

//取出后缀
for (int k=MIN(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唯一可译码的判断!\n"< 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 Cnum;
cout<<"输入待检测码的个数:";
cin>>Cnum;
cout<<"输入待检测码"< for(int i=0; i {
cout< 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<<"是唯一可译码码组!"< exit(1);
}
Fbegin=Fend;
Fend=FP;
CP=Ch;
while(CP->next)
{
CP=CP->next;
tempPtr=Fbegin;
for(;;)
{
tempPtr=tempPtr->next;
houzhui(CP->string,tempPtr->string);
if(tempPtr == Fend)
break;
}
}
outputstr(Fh);//输出F集合中全部元素
}
}
全部回答
有电脑还有电机啊。。32题微处理器地址分配的方法通常有两种:线选法和译码法.线选法所谓线选法, 就是直接以系统的地址线作为存储器芯片的片选信号, 为此只需把用到的地址线与存储器芯片的片选端直接相连即可.译码法又分全译码法和部分译码法全译码法全译码法是指将地址总线中除片内地址以外的全部高位地址接到译码器的输入端参与译码.采用全译码法,每个存储单元的地址都是唯一的,不存在地址重叠,但译码电路较复杂,连线也较多.全译码法可以提供对全部存储空间的寻址能力.当存储器容量小于可寻址的存储空间时,可从译码器输出线中选出连续的几根作为片选控制,多余的令其空闲,以便需要时扩充. 部分译码法部分译码法是将高位地址线中的一部分(而不是全部)进行译码,产生片选信号.该方法常用于不需要全部地址空间的寻址能力,但采用线选法地址线又不够用的情况.采用部分译码法时,由于未参加译码的高位地址与存储器地址无关,因此存在地址重叠问题.当选用不同的高位地址线进行部分译码时,其译码对应的地址空间不同.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
姓氏邓男.有什么好听的名字.
张掖各级纪检监察机关谈话涵询名单
富江百货店在什么地方啊,我要过去处理事情
红米2摔了一下屏幕就显示不起了,触摸没问题
美孚速霸10005w30机油符合vw50200标准?
国民生产总值和财政收入之间的关系
贵都城大酒楼地址在哪,我要去那里办事
谁知道个实木家具品牌都是用什么木,比如双叶
浙江杭州至山西忻州大概多少公里?
冷血动物有哪些照片
我明明下了部落冲突破解版为什么还是五百颗钻
朝出羽林宫,入参云台议的意思是什么
123+234+345+456=?
, What’s your name?A. SorryB. OKC. Excuse
3*95+2*50的低压电缆中间接头铜管要多长
推荐资讯
“拥有多少年历史”与“具有多少年历史”中,
【因地制宜的近义词】因人而异因地制宜
淘宝企业店铺取名
密果の蜜制鲜饮怎么去啊,有知道地址的么
关于两个人因为游戏在一起的言情TXT格式的小
什么汽车品牌?
姓杨福字辈的取名宝典
我国大地水准面与()的椭球面差距较大。
朋友们,做水电施工资料员主要干些什么,以前
学广告设计的以后从事什么工作,很迷茫。觉得
当兵能当一辈子吗
彩视如何分享给单个微信好友
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?