




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单元练习5一判断题(下列各题,正确的请在前面的括号内打;错误的打 )()(1)串是n个字母的有限序列。()(2)串的数据元素是一个字符。()(3)串的长度是指串中不同字符的个数。()(4)如果两个串含有相同的字符,则说明它们相等。()(5)如果一个串中所有的字母均在另一个串中出现,则说明前者是后者的子串。()(6)串的堆分配存储是一种动态存储结构。()(7)“DT”是“DATA”的子串。()(8)串中任意个字符组成的子序列称为该串的子串。()(9)子串的定位运算称为模式匹配。()(10)在链串中为了提高存储密度,应该增大结点的大小。二填空题(1) 由零个或多个字符组成的有限序列称为 字符串(或
2、串) 。(2) 字符串按存储方式可以分为:顺序存储、链接存储和 堆分配存储 。(3) 串的顺序存储结构简称为 顺序串 。(4) 串顺序存储非紧凑格式的缺点是: 空间利用率低 。(5) 串顺序存储紧凑格式的缺点是对串的字符处理 效率低 。(6) 串链接存储的优点是插入、删除方便,缺点的 空间利用率低 。(7) 在C或C+语言中,以字符 0 表示串值的终结。(8) 空格串的长度等于 空格的个数 。(9) 在空串和空格串中,长度不为0的是 空格串 。(10) 两个串相等是指两个串相长度等,且对应位置的 字符都相同 。(11) 设S=My Music,则LenStr(s)= _ 8 。(12) 两个字
3、符串分别为:S1=Today is,S2=30 July,2005,ConcatStr(S1,S2)的结果是: Today is 30 July,2005 。(13) 求子串函数SubStr(Today is 30 July,2005,13,4)的结果是: July 。(14) 在串的运算中,EqualStr(aaa,aab)的返回值为 m,则模式匹配算法最坏情况下的时间复杂度为: (n-m+1)*m 。三选择题(1)串是一种特殊的线性表,其特殊性体现在( B )。A.可以顺序存储 B数据元素是一个字符C.可以链接存储 D数据元素可以是多个字符(2)某串的长度小于一个常数,则采用( B )存储
4、方式最节省空间。 A链式 B顺序 C堆结构D无法确定(3)以下论述正确的是( C )。 A空串与空格串是相同的 Btel是Teleptone的子串 C空串是零个字符的串 D. 空串的长度等于1(4)以下论述正确的是( B )。 A空串与空格串是相同的 Bton是Teleptone的子串 C空格串是有空格的串 D. 空串的长度等于1(5)以下论断正确的是( A )。 A是空串, 空格串 BBEIJING是BEI JING的子串 CsomethingSomethig DBIT=BITE(6)设有两个串S1和S2,则EqualStr(S1,S2)运算称作( D )。 A. 串连接 B模式匹配 C.
5、求子串 D串比较(7)串的模式匹配是指( D )。A判断两个串是否相等C找某字符在主串中第一次出现的位置B对两个串比较大小D找某子串在主串中第一次出现的第一个字符位置(8)若字符串ABCDEFG采用链式存储,假设每个字符占用1个字节,每个指针占用2个字节。则该字符串的存储密度为( D )。 A20 B40 C50 D333(9)若字符串ABCDEFG采用链式存储,假设每个指针占用2个字节,若希望存储密度50,则每个结点应存储( A )个字符。 A2 B3 C4D5(10)设串S1=I AM,S2=A SDUDENT,则ConcatStr(S1,S2)=( B )。 AI AM BI AM A
6、SDUDENT CIAMASDUDENT D. A SDUDENT(11)设S=,则LenStr(S)=( A )。A0 B1 C2 D3(12)设目标串T=AABBCCDDE,模式P=ABCDE,则该模式匹配的有效位移为 ( A )。A0 B1 C2 D3(13)设目标串T=AABBCCDDEEFF,模式P=CCD,则该模式匹配的有效位移为 ( D )。A2 B3 C4 D. 5(14)设目标串T=aabaababaabaa,模式P=abab,朴素匹配算法的外层循环进行了( D )次。 A1 B9 C4 D5(15)朴素模式匹配算法在最坏情况下的时间复杂度是( D )。 AO(m) BO(n
7、) C0(m+n) D0(m*n)(16)S=morning,执行求子串函数SubStr(S,2,2)后的结果为( B )。Amo Bor Cin Dng(17)S1=good,S2=morning,执行串连接函数ConcatStr(S1,S2)后的结果为( A )。 Agoodmorning Bgood morning CGOODMORNING DGOOD MORNING(18)S1=good,S2=morning,执行函数SubStr(S2,4,LenStr(S1)后的结果为( B )。 AgoodBning Cgo Dmorn(19)设串S1=ABCDEFG,S2=PQRST ,则Con
8、catStr(SubStr(S1,2,LenStr(S2),SubStr(S1,LenStr(S2),2)的结果串为( D )。 ABCDEF BBCDEFG CBCPQRST D. BCDEFEF(20)若串S=SOFTWARE,其子串的数目最多是:( C ) 。 A35 B36 C37 D38 (8+7+6+5+4+3+2+1+1=37)四程序题填空(每空2分,共50分)1下面程序是把两个串r1和r2首尾相连的程序,即:r1=r1+r2,试完成程序填空。typedef Struct char vecMAXLEN; / 定义合并后串的最大长度int len; / len为串的长度St ;vo
9、id ConcatStr(Str *r1,Str *r2) / 字符串连接函数int i;cout vecvec;if(r1-len+r2-len MAXLEN )cout 两个串太长,溢出!;else for(i=0;ilen ;i+) / 把r2连接到r1 r1-vec r1-len+i =r2-veci; r1-vecr1-len+i= 0 ; / 添上字符串结束标记r1-len= r1-len+r2-len ; / 修改新串长度 2. 设x和y两个串均采用顺序存储方式,下面的程序是比较x 和y两个串是否相等的函数,试完成程序填空。#define MAXLEN 100typedef st
10、ruct char vecMAXLEN; len; str;int same (x,y)str *x,*y; int i=0,tag=1; if (x-len != y-len) return (0); / (或 ) else while ( ilen & tag ) if ( x-veci != y-veci ) tag=0 ; i+ ; ( 或 i=i+1 ) return (tag); 3下面算法是判断字符串是否为回文(即正读和倒读相同),试完成程序填空。解: #include stdio.htypedef struct char vecMAXLEN; int len; str;void
11、 Palindrome (str s) int i=0; ing j= s.len-1 ; while ( j-i=1 ) if ( s.veci= s.vecj ) i+; j- ;continue / (或 j=j+1 ) else break; if ( j-i=1 ) coutIt is not a palindromen; else coutIt is a palindromen;五编程题1 设下面所用的串均采用顺序存储方式,其存储结构定义如下,请编写下列算法:#define MAXLEN 100typedef struct char vecMAXLEN; int len; str;
12、(1) 将串中r中所有其值为ch1的字符换成ch2的字符。(2) 将串中r中所有字符按照相反的次序仍存放在r中。(3) 从串r中删除其值等于ch的所有字符。(4) 从串r1中第index个字符起求出首次与字符r2相同的子串的起始位置。(5) 从串r中删除所有与串r3相同的子串(允许调用第(4)小题的函数)。(6) 编写一个比较x 和y两个串是否相等的函数。2设计一算法判断字符串是否为回文(即正读和倒读相同)3设计一算法从字符串中删除所有与字串del相同的子串4设计一算法统计字符串中否定词not的个数1解:(1)算法思想:从头至尾扫描r串,对于值为ch1的元素直接替换成ch2即可。 str *t
13、rans (r,ch1,ch2) str *r; char ch1,ch2; int i; for (i=0;ilen;i+)if (r-veci=ch1) r-veci=ch2; return(r); (2)算法思想是:将第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,依次类推,便将该串的所有字符反序了。 str *invert (r) str *r; int i; char x; for (i=0;ilen%2) ;i+) x=r-veci; r-veci=r-r-len-i+1; r-vecr-len-i+1=x; return (r ); (3)算法思想:从头到尾扫描r串
14、,对于值为ch的元素用移动的方式进行删除。 str *delall (r,ch) str *r; char ch; int i,j;for (i=0;ilen;i+)if (r-veci=ch) for (j=i;jlen;j+) r-veci=r-veci+1; r-len=r-len-1; return (r ); (4)算法思想:从第index个元素开始扫描r1,当其元素值与r2的第一个元素的值相同时,判定它们之后的元素值是否依次相同,直到r2结束为止,若都相同则返回,否则继续上述过程直到r1扫描完为止。 int partposition(r2,r1,index) str *r2, *r
15、1; int index; int i,j,k; for (i=index;r1-veci;i+) for (j=i,k=0;r1-vecj=r2-veck;j+,k+) if (!r2-veck+1) return(i); return(-1);(5)算法思想:从位置1开始调用第(4)小题的函数partposition(),若找到了一个相同子串,则调用delsubstring(),再相同的方法查找后面位置的相同子串。 str *delstringall(r,r3) str *r, *r3; int i=0; while (ilen) if (partposition(r,r3,i)!=-1)
16、 delsubstring(r,i,r3-len) i+; (6)两个串相等的条件是两个串的长度相等,且两个串的对应的字符必须都相同。int same(x,y)str *x,*y; int i=0,tag=1; if (x-len!=y-len) return(0); else while (ilen & tag) if (x-veci!=y-veci) tag=0; i+; return(tag); 2解:#include stdio.htypedef struct char *head; int length; Hstring;void isPalindrome(Hstring s) in
17、t i=0; int j=s.length-1; while (j-i=1) if (s.headi=s.headj) i+; j-; continue; else break; if (j-i=1) printf(Tt is not a palindromen ); else printf(it is a palindromen);3解:#include stdio.h#include string.htypedef struct char *head; int length;Hstring;char *DeleteSubString(Hstring S,Hstring T) int i=0
18、; int j,k; int Slength=S.length; int Tlength=T.length; char *tail; while (i=Slenght-Tlength) j=0;k=i; while (jTlength & S.headk=T.headj) / 在位移i用朴素的模式匹配 j+; k+; if (j=Tlength) / 若匹配则执行下面的程序 if (i=0) / 若位于头位置则改变头指针 S.head=S.head+Tlength; S.length-=Tlength; Slength-=Tlength; i=0; else if (i+TlengthSlen
19、gth) / 若位于中间则拼接两端 tail=S.head+i+Tlength; strcpy(S.head+i,tail); S.length-=Tlength; Slength-=Tlength; else / 若位于尾部则割去 strncpy(S.head+i,”0”,1); else / 若不匹配则i加1 i+; return S.head;4解:#include stdio.h#include string.hint Find_word(char *text, const char *word) int textlength=strlen(text); int wordlength=strlen(word); int i,j,k; int count=0;for (i=0;itextlength-wordlen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光的反射(教学设计)-2024-2025学年科学五年级上册人教鄂教版
- 2025年甘肃省兰州市单招职业适应性测试题库完整版
- 2025年河南女子职业学院单招职业倾向性测试题库学生专用
- 2025年湖北生态工程职业技术学院单招职业倾向性测试题库必考题
- 2025年度公司独家签约带货主播合作协议
- 宠物医院装修全包合同细则
- 2025年度数字经济平台运营人员聘用协议
- 2025年度美容美发门店联营合作合同
- 农村茶艺馆装修合同模板
- 2025年度手房买卖意向金支付与房屋交易风险控制合同
- 教科版 二年级下册科学教学计划
- 中国脓毒症及脓毒性休克急诊治疗指南
- 部编版六年级道德与法治下册《学会反思》教案
- 人教版体育与健康四年级-《障碍跑》教学设计
- DB32-T 2860-2015散装液体化学品槽车装卸安全作业规范-(高清现行)
- 部编版四年级下册语文教案(完整)
- T∕CIS 71001-2021 化工安全仪表系统安全要求规格书编制导则
- 福利院装修改造工程施工组织设计(225页)
- 环境空气中臭氧的测定
- 第七章 化学物质与酶的相互作用
- 机械毕业设计论文钢筋自动折弯机的结构设计全套图纸
评论
0/150
提交评论