第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学2001一、5(2分)】A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2若串S1=‘ABCDEFG’,S2=‘9898’,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果为()【北方交通大学1999一、5(25/7分)】A.ABC###G0123B.ABCD###2345C.ABC###G2345D.ABC###2345E.ABC###G1234F.ABCD###1234G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串B.联接C.匹配D.求串长【北京邮电大学2000二、4(20/8分)】【西安电子科技大学1996一、1(2分)】4.已知串S=‘aaab’,其Next数组值为()。【西安电子科技大学1996一、7(2分)】A.0123B.1123C.1231D.12115.串‘ababaaababaa’的next数组为()。【中山大学1999一、7】A.012345678999B.012121111212C.011234223456D.01230123223456.字符串‘ababaabab’的nextval为()A.(0,1,0,1,04,1,0,1)B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1)D.(0,1,0,1,0,1,0,1,1)【北京邮电大学1999一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。A.01112211123456712B.01112121123456112C.01110013101100701D.01112231123456712E.01100111011001701F.01102131011021701【北京邮电大学1998二、3(2分)】8.若串S=’software’,其子串的数目是()。【西安电子科技大学2001应用一、2(2分)】A.8B.37C.36D.99.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。【中科院计算所1997】A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1E.(n2/2)-(n/2)-1F.其他情况10.串的长度是指()【北京工商大学2001一、6(3分)】A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数二、判断题1.KMP算法的特点是在模式匹配时指示主串的指针不会变小。()【北京邮电大学2002一、4(1分)】2.设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价可能会更为节省。()【长沙铁道学院1998一、1(1分)】3.串是一种数据对象和操作都特殊的线性表。()【大连海事大学20011、L(1分)】二、填空题1.空格串是指__(1)__,其长度等于___(2)__。【西安电子科技大学2001软件一、4(2分)】2.组成串的数据元素只能是________。【中山大学1998一、5(1分)】3.一个字符串中________称为该串的子串。【华中理工大学2000一、3(1分)】4.INDEX(‘DATASTRUCTURE’,‘STR’)=________。【福州大学1998二、4(2分)】5.设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为________。【重庆大学2000一、4】6.模式串P=‘abaabcac’的next函数值序列为________。【西安电子科技大学2001软件一、6(2分)】7.字符串’ababaaab’的nextval函数值为________。【北京邮电大学2001二、4(2分)】8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为__(1)__,又称P为__(2)__。【西安电子科技大学1998二、5(16/6分)】9.串是一种特殊的线性表,其特殊性表现在__(1)__;串的两种最基本的存储方式是__(2)__、__(3)__;两个串相等的充分必要条件是__(4)__。【中国矿业大学2000一、3(4分)】10.两个字符串相等的充分必要条件是_______。【西安电子科技大学1999软件一、1(2分)】11.知U=‘xyxyxyxxyxy’;t=‘xxy’;ASSIGN(S,U);ASSIGN(V,SUBSTR(S,INDEX(s,t),LEN(t)+1));ASSIGN(m,‘ww’)求REPLACE(S,V,m)=________。【东北大学1997一、1(5分)】12.实现字符串拷贝的函数strcpy为:voidstrcpy(char*s,char*t)/*copyttos*/{while(________)}【浙江大学1999一、5(3分)】13.下列程序判断字符串s是否对称,对称则返回1,否则返回0;如f(abba)返回1,f(abab)返回0;intf((1)________){inti=0,j=0;while(s[j])(2)________;for(j--;ij&&s[i]==s[j];i++,j--);return((3)_______)}【浙江大学1999一、6(3分)】14.下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。程序(a)PROCEDUREmaxcomstr(VARs,t:orderstring;VARindex,length:integer);VARi,j,k,length1:integer;con:boolean;BEGINindex:=0;length:=0;i:=1;WHILE(i=s.len)DO[j:=1;WHILE(j=t.len)DO[IF(s[i]=t[j])THEN[k:=1;length1:=1;con:=true;WHILEconDOIF(1)__THEN[length1:=length1+1;k:=k+1;]ELSE(2)_;IF(length1length)THEN[index:=i;length:=length1;](3)____;]ELSE(4)____;](5)___;]END;程序(b)voidmaxcomstr(orderstring*s,*t;intindex,length){inti,j,k,length1,con;index=0;length=0;i=1;while(i=s.len){j=1;while(j=t.len){if(s[i]==t[j]){k=1;length1=1;con=1;while(con)if(1)_{length1=length1+1;k=k+1;}else(2)__;if(length1length){index=i;length=length1;}(3)____;}else(4)___;}(5)__}}【上海大学2000一、2(10分)】15.完善算法:求KMP算法中next数组。PROCget_next(t:string,VARnext:ARRAY[1..t.len]OFinteger);BEGINj:=1;k:=(1)__;next[1]:=0;WHILEjt.lenDOIFk=0ORt.ch[j]=t.ch[k]THENBEGINj:=j+1;k:=k+1;next[j]:=k;ENDELSEk:=(2)___;END;【中山大学1998四、1(4分)】16.下面函数index用于求t是否为s的子串,若是返回t第一次出现在s中的序号(从1开始计),否则返回0。例如:s=‘abcdefcdek’,t=‘cde’,则indse(s,t)=3,index(s,’aaa’)=0。已知t,s的串长分别是mt,msFUNCindex(s,t,ms,mt);i:=1;j:=1;WHILE(ims)AND(jmt)DOIFs[i]=t[j]THEN[(1)__;(2)__]ELSE[(3)___;(4)_]IFjmtTHENreturn(5)____;ELSEreturn(6)__ENDF;【南京理工大学1999三、2(6分)】17.阅读下列程序说明和pascal程序,把应填入其中的()处的字句写在答题纸上。程序说明:本程序用于判别输入的字符串是否为如下形式的字符串:W&M$其中,子字符串M是子字符串W的字符反向排列,在此假定W不含有字符&和字符$,字符&用作W与M的分隔符,字符$用作字符串的输入结束符。例如,对输入字符串ab&ba$、11&12$、ab&dd$、&$,程序将分别输出Ok.(是),No.(不是)。程序PROGRAMaccept(input,output);CONSTmidch=’&’;endch=’$’;VARan:boolean;ch:char;PROCEDUREmatch(VARanswer:boolean);VARch1,ch2:char;f:boolean;BEGINread(ch1);IFch1endchTHENIF(1)__THENBEGINmatch(f);IFfTHENBEGINread(ch2);answer:=(2)_ENDELSEanswer:=falseENDELSE(3)___ELSE(4)___END;BEGINwriteln(‘EnterString:’);match(an);IFanTHENBEGIN(5)__IF(6)_THENwriteln(‘Ok.’)ELSEwriteln(‘No.’)ENDELSEwriteln(‘No.’)END.【上海海运学院1998七(15分)】18.试利用下列栈和串的基本操作完成下述填空题。initstack(s)置s为空栈;push(s,x)元素x入栈;pop(s)出栈操作;gettop(s)返回栈顶元素;sempty(s)判栈空函数;setnull(st)置串st为空串;length(st)返回串st的长度;equal(s1,s2)判串s1和s2是否相等的函数;concat(s1,s2)返回联接s1和s2之后的串;sub(s,i,1)返回s中第i个字符;empty(st)判串空函数FUNCinvert(pre:string;VARexp:string):boolean;{若给定的表达式的前缀式pre正确,本过程求得和它相应的表达式exp并返回“true”,否则exp为空串,并返回“false”。已知原表达式中不包含括弧,opset为运算符的集合。}VARs:stack;i,n:integer;succ:boolean;ch:char;BEGINi:=1;n:=length(pre);succ:=true;(1)__;(2)__;WHILE(in)ANDsuccDOBEGINch:=sub(pre,i,l);IF(3)_THEN(4)__ELSEIF(5)__THEN(6)_ELSEBEGINexp:=concat((7)___,(8)____);exp:=concat((9)___,(10)___);(11)__;END;i:=i+1END;IF(12)___THENBEGINexp:=concat(exp,sub(pre,n,1));invert:=trueENDELSEBEGINsetnull(exp);invert:=falseENDEND;注意:每个空格只填一个语句。【清华大学1996八】四、应用题1.名词解释:串【大连海事1996一、1