数据结构课后练习 - 第4章.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课后练习 - 第4章

第四章 串 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法 4.4 串操作应用举例 学习要点 熟悉串的7种基本操作的定义,并能利用这些基本操作来实现串的其它各种操作。 熟练掌握串的定长顺序存储结构上实现串的各种操作的方法。 掌握串的堆存储结构以及在其上实现串操作的基本方法。 一、判断对错题 1. 串中不可以包含有空白字符。( ) 2. 子串是主串中字符构成的有限序列。( ) 二、单项选择题 2. 求字符串T在字符串S中首次出现的位置的操作为_______。 A. 求串的长度 B. 求子串 C. 串的模式匹配 D. 串的连接 3. 若串S=”software”,其子串数目是_______。 A. 8 B. 37 C. 36 D. 9 4. 字符串”VARTYPE int”,若采用动态分配的顺序存储方法需要_______个字节(设每种数据均占用2个字节)。 A. 22 B. 11 C. 10 D. 动态产生,视情况而定 三、填空题 1. 串的两种最基本的存储方式是____________和____________ 。 2. 串的链式存储结构是将存储区域分成一系列大小相同的节点,每个节点有两个域:____________域和____________域。其中前者用于存储数据,后者用于存储下一个节点的指针。 四、简答题 1. 简述串的存储结构及各自的特点。 在顺序存储结构中,实现串操作的原操作为“字符序列的复制”,操作的时间复杂度基于复制的字符序列的长度。 在定长顺序存储表示中,如果在操作中出现串值序列的长度超过上界MAXSTRLEN时,约定用截尾法处理; 这种情况不仅在求联接串时可能发生,在串的其它操作中,如插入、置换等也可能发生。克服这个弊病只有不限定串长的最大长度,即动态分配串值的存储空间。 四、简答题 1. 简述串的存储结构及各自的特点。 这种存储结构表示时的串操作仍是基于“字符序列的复制” 。例如,串复制操作StrCopy(T, S)的实现算法是,若串T已存在,则先释放串T所占空间,当串S不空时,首先为串T分配大小和串S长度相等的存储空间,然后将串S的值复制到串T中。 又如,串插入操作StrInsert(S,pos,T)的实现算法是,为串S重新分配大小等于串S和串T长度之和的存储空间,然后进行串值复制。 四、简答题 1. 简述串的存储结构及各自的特点。 为了提高存储密度,可使每个结点存放多个字符。通常将结点数据域存放的字符个数定义为结点大小。 显然,当结点大小大于1时,串的长度不一定正好是结点的整数倍,则链表中的最后一个结点不一定全被串值占满,此时通常补上“#”或其它的非串值字符(一般情况下“#”不属于串的字符集,是一个特殊的符号)。 这种存储形式优点是存储密度高于结点大小为1 的存储形式。不足之处是做插入、删除字符的操作时,可能会引起结点之间字符的移动,算法实现起来比较复杂。 四、简答题 2. 字符串s1=‘abcdefghijklmnopqrstuvw’,由如下运算分别得到s2和s3,请给出s2和s3的值。 四、简答题 2. 字符串s1=‘abcdefghijklmnopqrstuvw’,由如下运算分别得到s2和s3,请给出s2和s3的值。 四、简答题 2. 字符串s1=‘abcdefghijklmnopqrstuvw’,由如下运算分别得到s2和s3,请给出s2和s3的值。 四、简答题 3. 分析下述两个算法的具体功能。 四、简答题 3. 分析下述两个算法的具体功能。 五、程序设计题 1. 设计一个链串上实现串比较操作StringEqual(s, t)的算法。 int index( LinkString r1, LinkString r2 ) { //链串上的子串定位操作 LinkString p, p1, q, q1; int i=0, pos=0; p=r1-head; while ( p!=NULL ) { q=r2-head; while( q!=NULL ) { if ( p-data==q-data ) { p1=p-next; q1=q-next; while( p1-data==q1-data ) //当前字符相同

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档