数据结构(严蔚敏)课件第4章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【课前思考】 【重点和难点】 【学习指南】 【本章小结】 实验五 链队列的建立及入队出队操作 一、实验目的 了解链队列的结构特点和有关概念,掌握链队列的建立及入队出队操作算法。 二、实验内容 建立链队列,并实现元素的入队出队的基本操作。 三、实验要点及说明 队列的链式存储结构简称为链队列,符合先进先出的原则。与链表一样,链队列大多采用带头结点的链对,设头指针为h,则对头结点为h-next,再设一个对尾指针q-rear指向链队列尾部。 队列的链式存储结构可定义如下: typedef struct node typedef struct {char data; {slnode *h; struct node *next; }slnode ; slnode *rear;}lqtype; 四、思考题 1、 比较链队列与链栈的相同点与不同点。 2、在链队列中, q-rear指针能否省去?若能,怎样才能找到队尾? 实验六 串的模式匹配 一、实验目的 熟悉串的有关概念,掌握串的存储结构及串的模式匹配算法。 二、实验内容 由用户随意输入两个串:主串S和模式串T,设S=‘s1s2…sn’,T=‘t1t2…tm’,且0m=n。用简单和KMP模式匹配算法判断模式串T是否在主串S中,若在,则输出模式串在主串的第一匹配位置,否则,匹配失败,返回零值。 三、实验要点及说明 简单模式匹配算法和KMP模式匹配算法的主要区别在于后者将有效利用已有的匹配结果,省去不必要的匹配过程,提高匹配性能。 利用串的顺序存储结构实现实验内容。 四、思考题 能否用串的块链存储结构实现KMP算法? 下面讨论以定长顺序结构 表示串时的几种算法。 一、简单算法 二、首尾匹配算法 三、KMP(D.E.Knuth, V.R.Pratt, J.H.Morris) 算法 一、简单算法Brute-Force算法 例如,设目标串s=“cddcdc”,模式串t=“cdc”。s的长度为n(n=6),t的长度为m(m=3)。用指针i指示目标串s的当前比较字符位置,用指针j指示模式串t的当前比较字符位置。BF模式匹配过程如下所示。 这个算法简单,易于理解,但效率不高,主要原因是:主串指针i在若干个字符序列比较相等后,若有一个字符比较不相等,仍需回溯(即i=i-j+1)。该算法在最好情况下的时间复杂度为O(m),即主串的前m个字符正好等于模式串的m个字符。在最坏情况下的时间复杂度为O(n*m)。 int index(SqString s,SqString t) { int i=0,j=0,k; while (is.len jt.len) { if (s.ch[i]==t.ch[j]) /*继续匹配下一个字符*/ { i++; j++; /*主串和子串依次匹配下一个字符*/ } else /*主串、子串指针回溯重新开始下一次匹配*/ { i=i-j+1; /*主串从下一个位置开始匹配*/ j=0; /*子串从头开始匹配*/ } } if (j=t.len) k=i-t.len; /*返回匹配的第一个字符的下标*/ else k=-1; /*模式匹配不成功*/ return k; } 先比较模式串的第一个字符, 再比较模式串的最后一个字符, 最后比较模式串中从第二个到 第n-1个字符。 二、首尾匹配算法 int Index_FL(SString S, SString T, int pos) { sLength = S[0]; tLength = T[0]; i = pos; patStartChar = T[1]; patEndChar = T[tLength];

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档