数据结构课后习题及解析第四章.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课后 习题 解析 第四
- 资源描述:
-
第四章习题 1、 设s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’。给出下列操作得结果: StrLength(s); SubString(sub1,s,1,7); SubString(sub2,s,7,1); StrIndex(s,’A’,4); StrReplace(s,’STUDENT’,q); StrCat(StrCat(sub1,t), StrCat(sub2,q)); 2、 编写算法,实现串得基本操作StrReplace(S,T,V)。 3、 假设以块链结构表示串,块得大小为1,且附设头结点。 试编写算法,实现串得下列基本操作: StrAsign(S,chars); StrCopy(S,T); Strpare(S,T); StrLength(S); StrCat(S,T); SubString(Sub,S,pos,len)。 4. 叙述以下每对术语得区别:空串与空格串;串变量与串常量;主串与子串;串变量得名字与串变量得值。 5. 已知:S=”(xyz)*”,T=”(x+z)*y”。试利用联接、求子串与置换等操作,将S转换为T、 6. S与T就是用结点大小为1得单链表存储得两个串,设计一个算法将串S中首次与T匹配得子串逆置。 7. S就是用结点大小为4得单链表存储得串,分别编写算法在第k个字符后插入串T,及从第k个字符删除len个字符。 以下算法用定长顺序串: 8. 编写下列算法: (1)将顺序串r中所有值为ch1得字符换成ch2得字符。 (2)将顺序串r中所有字符按照相反得次序仍存放在r中。 (3)从顺序串r中删除其值等于ch得所有字符。 (4)从顺序串r1中第index 个字符起求出首次与串r2相同得子串得起始位置。 (5)从顺序串r中删除所有与串r1相同得子串。 9. 写一个函数将顺序串s1中得第i个字符到第j个字符之间得字符用s2串替换。 10. 写算法,实现顺序串得基本操作Strpare(s,t)。 11. 写算法,实现顺序串得基本操作StrReplace(&s,t,v)。 实习题 1. 已知串S与T,试以以下两种方式编写算法,求得所有包含在S中而不包含在T中得字符构成得新串R,以及新串R中每个字符在串S中第一次出现得位置。 (1) 利用CONCAT、LEN、SUB与EQUAL四种基本运算来实现。 (2) 以顺序串作为存储结构来实现。 2. 编写一个行编辑程序EDLINE,完成以下功能: (1) 显示若干行:list [[n1]-[n2]]:显示第n1行到第n2行,n1缺省时,从第一行开始,n2缺省时,到最后一行, (2) 删除若干行。del [[n1]-[n2]]: n1、n2说明同(1)。 (3) 编辑第n行。edit n:显示第n行得内容,另输入一行替换该行。 (4) 插入一行。ins n:在第n行之前插入一行。 (5) 字符替换。replace str1,str2, [[n1]-[n2]]:在n1到n2行之间用str2替换str1。 3.设计一个文学研究辅助程序,统计小说中特定单词出现得频率与位置。 第四章答案 4、1 设s=’I AM A STUDENT’,t=’GOOD’, q=’WORKER’。给出下列操作得结果: 【解答】StrLength(s)=14; SubString(sub1,s,1,7) sub1=’I AM A ’; SubString(sub2,s,7,1) sub2=’ ’; StrIndex(s,4,’A’)=6; StrReplace(s,’STUDENT’,q); s=’I AM A WORKER’; StrCat(StrCat(sub1,t),StrCat(sub2,q)) sub1=’I AM A GOOD WORKER’。 4、2编写算法,实现串得基本操作StrReplace(S,T,V)。 【解答】算法如下: int strReplace(SString S,SString T, SString V) {/*用串V替换S中得所有子串T */ int pos,i; pos=strIndex(S,1,T); /*求S中子串T第一次出现得位置*/ if(pos = = 0) return(0); while(pos!=0) /*用串V替换S中得所有子串T */ { switch(T、len-V、len) { case 0: /*串T得长度等于串V得长度*/ for(i=0;i<=V、len;i++) /*用V替换T*/ S->ch[pos+i]=V、ch[i]; case >0: /*串T得长度大于串V得长度*/ for(i=pos+t、ien;i<S->len;i--) /*将S中子串T后得所有字符 S->ch[i-t、len+v、len]=S->ch[i]; 前移T、len-V、len个位置*/ for(i=0;i<=V、len;i++) /*用V替换T*/ S->ch[pos+i]=V、ch[i]; S->len=S->len-T、len+V、len; case <0: /*串T得长度小于串V得长度*/ if(S->len-T、len+V、len)<= MAXLEN /*插入后串长小于MAXLEN*/ { /*将S中子串T后得所有字符后移V、len-T、len个位置*/ for(i=S->len-T、len+V、len;i>=pos+T、len;i--) S->ch[i]=S->ch[i-T、len+V、len]; for(i=0;i<=V、len;i++) /*用V替换T*/ S->ch[pos+i]=V、ch[i]; S->len=S->len-T、len+V、len; } else { /*替换后串长>MAXLEN,但串V可以全部替换*/ if(pos+V、len<=MAXLEN) { for(i=MAXLEN-1;i>=pos+T、len; i--) S->ch[i]=s->ch[i-T、len+V、len] for(i=0;i<=V、len;i++) /*用V替换T*/ S->ch[pos+i]=V、ch[i]; S->len=MAXLEN;} else /*串V得部分字符要舍弃*/ { for(i=0;i<MAXLEN-pos;i++) S->ch[i+pos]=V、ch[i]; S->len=MAXLEN;} }/*switch()*/ pos=StrIndex(S,pos+V、len,T); /*求S中下一个子串T得位置*/ }/*while()*/ return(1); }/*StrReplace()*/ 附加题:用链式结构实现定位函数。 【解答】 typedef struct Node { char data; struct Node *next; }Node,*Lstring; int strIndex(Lstring S, int pos, Lstring T) /*从串S得pos序号起,串T第一次出现得位置 */ { Node *p, *q, *Ppos; int i=0,,j=0; if(T->next= =NULL || S->next = =NULL) return(0); p=S->next; q=T->next; while(p!=NULL && j<pos) /*p指向串S中第pos个字符*/ {p=p->next; j++;} if(j!=pos) return(0); while(p!=NULL && q!=NULL) { Ppos=p; /*Ppos指向当前匹配得起始字符*/ if(p->data = = q->data) {p=p->next; q=q->next;} else /*从Ppos指向字符得下一个字符起从新匹配*/ {p=Ppos->next; q=T->head->next; i++;} } if(q= =NULL) return(pos+i); /*匹配成功*/ else return(0); /*失败*/ } 第4章 串 习题 1、 设s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’。给出下列操作得结果: StrLength(s); SubString(sub1,s,1,7); SubString(sub2,s,7,1); StrIndex(s,’A’,4); StrReplace(s,’STUDENT’,q); StrCat(StrCat(sub1,t), StrCat(sub2,q)); [参考答案] StrLength(s)=14; sub1= ’I AM A_’; sub2= ’_’; StrIndex(s,’A’,4)=6; StrReplace(s,’STUDENT’,q)= ’I AM A WORKER’; StrCat(StrCat(sub1,t), StrCat(sub2,q))= ’I AM A GOOD WORKER’; 2、 编写算法,实现串得基本操作StrReplace(S,T,V)。 3、 假设以块链结构表示串,块得大小为1,且附设头结点。 试编写算法,实现串得下列基本操作: StrAsign(S,chars); StrCopy(S,T); Strpare(S,T); StrLength(S); StrCat(S,T); SubString(Sub,S,pos,len)。 [说明]:用单链表实现。 4. 叙述以下每对术语得区别:空串与空格串;串变量与串常量;主串与子串;串变量得名字与串变量得值。 5. 已知:S=”(xyz)*”,T=”(x+z)*y”。试利用联接、求子串与置换等操作,将S转换为T、 6. S与T就是用结点大小为1得单链表存储得两个串,设计一个算法将串S中首次与T匹配得子串逆置。 7. S就是用结点大小为4得单链表存储得串,分别编写算法在第k个字符后插入串T,及从第k个字符删除len个字符。 以下算法用定长顺序串: 8. 写下列算法: (1) 将顺序串r中所有值为ch1得字符换成ch2得字符。 (2) 将顺序串r中所有字符按照相反得次序仍存放在r中。 (3) 从顺序串r中删除其值等于ch得所有字符。 (4) 从顺序串r1中第index 个字符起求出首次与串r2相同得子串得起始位置。 (5) 从顺序串r中删除所有与串r1相同得子串。 9. 写一个函数将顺序串s1中得第i个字符到第j个字符之间得字符用s2串替换。 [提示]:(1)用静态顺序串 (2)先移位,后复制 10. 写算法,实现顺序串得基本操作Strpare(s,t)。 11. 写算法,实现顺序串得基本操作StrReplace(&s,t,v)。 [提示]: (1) 被替换子串定位(相当于第9题中i) (2) 被替换子串后面得字符左移或右移(为替换子串准备房间) (3) 替换子串入住(复制) (4) 重复上述,直到……展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




数据结构课后习题及解析第四章.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4359863.html