习题集解析部分

第4章 串

——《数据结构题集》-严蔚敏.吴伟民版

       源码使用说明  链接☛☛☛ 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

       课本源码合辑  链接☛☛☛ 《数据结构》课本源码合辑

       习题集全解析  链接☛ 《数据结构题集》习题解析合辑

      相关测试数据下载  链接☛ 数据包

      本习题文档的存放目录:数据结构\▼配套习题解析\▼04 串

      文档中源码的存放目录:数据结构\▼配套习题解析\▼04 串\▼习题测试文档-04

      源码测试数据存放目录:数据结构\▼配套习题解析\▼04 串\▼习题测试文档-04\Data

一、基础知识题

4.1❶简述空串和空格串(或称空格符串)的区别。

4.2❷对于教科书4.1节中所述串的各个基本操作,讨论是否可由其他基本操作构造而得,如何构造?

4.3❶设s = ‘I AM A STUDENT’,t = ‘GOOD’,q = ‘WORKER’。

求:StrLength(s),StrLength(t),SubString(s, 8, 7),SubString(t, 2, 1),Index(s, ‘A’),Index(s, t),Replace(s, ‘STUDENT’, q),Concat(SubString(s, 6, 2), Concat(t, SubString(s, 7, 8)))。

4.4❶已知下列字符串

    a = ‘THIS’, f = ‘A SAMPLE’, c = ‘GOOD’, d = ‘NE’, b = ‘ ’.

    s = Concat(a, Concat(SubString(f, 2, 7), Concat(b, SubString(a, 3, 2)))),

    t = Replace(f, SubString(f, 3, 6), c),

    u = Concat(SubString(c, 3, 1), d),

    g = ‘IS’,

    v = Concat(s, Concat(b, Concat(t, Concat(b, u)))),

  试问:s,t,v,StrLength(s),Index(v, g),Index(u, g)各是什么?

4.5❶试问执行以下函数会产生怎样的输出结果?

    void demonstrate()

    {

        StrAssign(s, ‘THIS IS A BOOK’);

        Replace(s, SubString(s, 3, 7), ‘ESE ARE’);

        StrAssign(t, Concat(s, ‘S’));

        StrAssign(u, ‘XYXYXYXYXYXY’);

        StrAssign(v, SubString(u, 6, 3));

        StrAssign(w, ‘W’);

        printf(‘t=’, t, ‘v=’, v, ‘u=’, Replace(u, v, w));

    }//demonstrate

4.6❷已知:s = ‘(XYZ)+*’,t = ‘(X+Z)*Y’。试利用联接、求子串和置换等基本运算,将s转化为t。

4.7❷令s = ‘aaab’,t = ‘abcabaa’,u = ‘abcaabbabcabaacbacba’。试分别求出它们的next函数值和nextval函数值。

4.8❷已知主串s = ‘ADBADABBAABADABBADADA’,

        模式串pat = ‘ADABBADADA’,

  写出模式串的nextval函数值,并由此画出KMP算法匹配的全过程。

4.9❸在以链表存储串值时,存储密度是结点大小和串长的函数。假设每个字符占一个字节,每个指针占4个字节,每个结点的大小为4的整数倍,已知串长的分布函数为f(l)且,求结点大小为4k,串长为l时的存储密度d(4k, l)(用公式表示)。

二、算法设计题

    在编写4.10至4.14题的算法时,请采用StringType数据类型:

    StringType是串的一个抽象数据类型,它包含以下五种基本操作:

    void StrAssign (StringType &t, StringType s);    //将s的值赋给t。s的实际参数可以是串变量或者串常量(如:‘abcd’)。

    int StrCompare (StringType s, StringType t);   //比较s和t。若s>t,返回值>0;若s=t,返回值=0;若s<t,返回值<0。

    int StrLength (StringType s);           //返回s中的元素个数,即该串的长度。

    StringType Concat (StringType s, StringType t);   //返回由s和t联接而成的新串。

    StringType SubString (StringType s, int start, int len) ; //当1≤start≤StrLength(s)且0≤len≤StrLength(s)-start+1时,返回s中第start个字符起长度为len的子串,否则返回空串。

顺序串

4.10❸编写对串求逆的递推算法。

4.11❸编写算法,求得所有包含在串s中而不包含在串t中的字符(s中重复的字符只选一个)构成的新串r,以及r中每个字符在s中第一次出现的位置。

4.12❸编写一个实现串的置换操作Replace(&S, T, V)的算法。

4.13❸编写算法,从串s中删除所有和串t相同的子串。

4.14❹利用串的基本操作以及栈和集合的基本操作,编写“由一个算术表达式的前缀式求后缀式”的递推算法(假设前缀式不含语法错误)。

        在编写4.15至4.20题的算法时,请采用教科书4.2.1节中所定义的定长顺序存储表示,而不允许调用串的基本操作。

4.15❸编写算法,实现串的基本操作StrAssign(&T, chars)。

4.16❸编写算法,实现串的基本操作StrCompare(S, T)。

4.17❸编写算法,实现串的基本操作Replace(&S, T, V)。

4.18❸编写算法,求串s所含不同字符的总数和每种字符的个数。

4.19❸在串的定长顺序存储结构上直接实现4.11题要求的算法。

4.20❸编写算法,从串s中删除所有和串t相同的子串。

块链串

4.21❹假设以结点大小为1(且附设头结点)的链表结构表示串。试编写实现下列六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数。

4.22❹  假设以块链结构表示串。试编写将串s插入到串t中某个字符之后的算法(若串t中不存在此字符,则将串s联接在串t的末尾)。

4.23❹假设以块链结构作串的存储结构。试编写判别给定串是否具有对称性的算法,并要求算法的时间复杂度为O(StrLength(S))。

堆串

        在编写4.24至4.26题的算法时,请采用教科书4.2.2节中所定义的堆分配存储表示。

4.24❸试写一算法,在串的堆存储结构上实现串基本操作Concat(&T, s1,s2)。

4.25❸试写一算法,实现堆存储结构的串的置换操作Replace(&S, T, V)。

4.26❸试写一算法,实现堆存储结构的串的插入操作 StrInsert(&S, pos, T)。

顺序串

4.27❸当以教科书4.2.1节中定义的定长顺序结构表示串时,可如下所述改进定位函数的算法:先将模式串t中的第一个字符和最后一个字符与主串s中相应的字符比较,在两次比较都相等之后,再依次从t的第二个字符逐个比较。这样做可以克服算法Index(算法4.5)在求模式串’akb’(ak表示连续k个字符’a’)在主串’anb’(k≤n)中的定位函数时产生的弊病。试编写上述改进算法,并比较这两种算法在作Index(’anb’,’akb’)运算时所需进行的字符间的比较次数。

块链串

4.28❹假设以结点大小为1(带头结点)的链表结构表示串,则在利用next函数值进行串匹配时,在每个结点中需设三个域:数据域chdata、指针域succ和指针域next。其中chdata域存放一个字符;succ域存放指向同一链表中后继结点的指针;next域在主串中存放指向同一链表中前驱结点的指针;在模式串中,存放指向当该结点的字符与主串中的字符不等时,在模式串中下一个应进行比较的字符结点(即与该字符的next函数值相对应的字符结点)的指针,若该节点字符的next函数值为0,则其next域的值应指向头结点。试按上述定义的结构改写求模式串的next函数值的算法。

4.29❹试按4.28题定义的结构改写串匹配的改进算法(KMP算法)。

顺序串

4.30❺假设以定长顺序存储结构表示串,试设计一个算法,求串s中出现的第一个最长重复子串及其(第一次出现的)位置,并分析你的算法的时间复杂度。

4.31❺假设以定长顺序存储结构表示串,试设计一个算法,求串s和串t的一个最长公共子串,并分析你的时间复杂度。若要求第一个出现的最长公共子串(即它在串s和串t的最左边的位置上出现)和所有的最长公共子串,讨论你的算法能否实现。

转载于:https://www.cnblogs.com/kangjianwei101/p/5225419.html

串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版相关推荐

  1. 栈和队列-第3章-《数据结构习题集》答案解析-严蔚敏吴伟民版

    习题集解析部分 第3章  栈和队列                                                                                   ...

  2. c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版...

    习题集解析部分 第4章 串 --<数据结构题集>-严蔚敏.吴伟民版 源码使用说明  链接☛☛☛<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合 ...

  3. 栈和队列-第3章-《数据结构题集》习题解析-严蔚敏吴伟民版

    习题集解析部分 第3章 栈和队列 --<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解 ...

  4. 4-2-串的堆存储结构-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第4章  串 - 堆串 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解 ...

  5. 4-3-串的块链存储结构-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第4章  串 - 块链串 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集 ...

  6. 6-5-树的双亲表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...

    课本源码部分 第6章  树和二叉树 - 树的双亲表示法 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版) ...

  7. 10-1-直接插入排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第10章  内部排序 - 直接插入排序 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课 ...

  8. 10-9-堆排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第10章  内部排序 - 堆排序 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码 ...

  9. 12-1-顺序文件归并-文件-第12章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第12章  文件 - 顺序文件归并 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源 ...

  10. 3-6-汉诺塔(Hanoi Tower)问题-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版...

    课本源码部分 第3章  栈和队列 - 汉诺塔(Hanoi Tower)问题 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版> ...

最新文章

  1. php 两个数组求交集_如何求两个数组的交集
  2. SpockFS —— 基于 HTTP 的文件系统
  3. 【深度学习】基于Pytorch进行深度神经网络计算(二)
  4. OpenStack tokens id获取测试
  5. jpa使用注解传递对象_注解(下)
  6. centos不同版本修改主机名的正确方法
  7. Linux常见命令(一)
  8. -webkit-text-size-adjust
  9. oracle 9i,10G,11G,各版本下载资源(使用迅雷),收集好久,分享上来!
  10. 8.声卡驱动02-自己实现alsa驱动-虚拟声卡-匹配
  11. 全球酷站中心 html5网站,除了Behance,还有哪些优质设计资源站
  12. 大数据毕设/课设 - 基于大数据的全国疫情实时监控大屏系统设计与实现
  13. 书摘:别做正常的傻瓜
  14. 电脑重复文件扫描工具清理:Easy duplicate finder 5.10注册破解版
  15. 小马模拟器 (支持Android系统)
  16. DOJP1520星门跳跃题解
  17. SCCM部署系统任务序列失败错误代码0x80070002
  18. 10类职业人士最容易受到失眠困扰
  19. 制定to-do list的艺术
  20. html如何大小写转换键,怎么把26键变成大写 26键拼音小写怎么转换大写?

热门文章

  1. mysql所选路径已经存在_5分钟安装好MySQL数据库(建议收藏)
  2. java executor 例子_Java中Executor框架的实例
  3. java解压zip异常_zip 文件解压缩问题解决 java.util.zip.ZipException:error in opening zip file | 学步园...
  4. SPA单页面应用、前后端分离项目SEO优化的方法
  5. 第二章 字符串处理与编码不再发愁
  6. C#中窗体的数据传递
  7. 隐藏在SWT、Swing、AWT背后的故事
  8. Windows Server 2008 多元密码策略之ADSIEDIT篇
  9. 提升存储过程的效率,用减少表的更新次数来实现
  10. 【YOLO家族】【论文翻译】YOLO v1 Unified, Real-Time Object Detection