顾长贵-第5章-串.ppt

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

5.3 串的堆分配表示与实现 (4)在S中第pos个位置插入T。示意图? int StrInsert(HeapString *S,int pos,HeapString T) /*在S中第pos个位置插入T */ { int i; if(pos0||pos-1S-length) {/*插入位置不正确,返回0*/ printf(插入位置不正确); return 0; } S-str=(char*)realloc(S-str,(S-length+T.length)*sizeof(char)); //? if(!S-str) { printf(内存分配失败); exit(-1); } for(i=S-length-1;i=pos-1;i--) S-str[i+T.length]=S-str[i]; /*将串S中第 pos个位置的字符往后移动T.length个位置*/ for(i=0;iT.length;i++) S-str[pos+i-1]=T.str[i]; /*将串T的字符赋值到S中*/ S-length=S-length+T.length; //作用? return 1; } 串的块链式存储 5.4 串的块链式存储表示与实现 5.4.1 串的块链式存储结构 和线性表的链式存储结构类似,串也可以采用链表存储串值。由于串结构的特性----结构中的每个数据元素是一个字符,则用链表存储串值时,存在一个结点大小的问题,即每个结点可以存放一个字符,也可以存放多个字符。例如,一个结点包含4个字符,即结点大小为4的链串如图5.5所示。一个结点包含1个字符,即结点大小为1的链串如图5.6所示。 5.4 串的块链式存储表示与实现 每个结点存放多个字符,可以有效地利用存储空间。当结点大小大于1时,由于串长不一定刚好为结点大小的整数倍,则链表中的最后一个结点不一定全部被串值占满,此时通常补上特殊的字符#或其他非串值字符。例如一个包含10个字符的链串(在最后补上两个#)如图5.7所示。 为了方便串的操作,当以链表存储串值时,除表头指针外,还可附设一个尾指针指示链表中的最后一个结点,并给出当前串的长度。我们称这样的串存储结构为块链结构。 5.4.1 串的块链存储表示 head A B I ^ C … 例:S=‘ABCDEFGHI’ ① 链表结点大小为1 ② 链表结点大小为4 ^ head A B C D E F G H I # # # 法1存储密度为1/2;法2存储密度为9/15=3/5 存储密度= 串值所占的存储位 实际分配的存储位 5.4 串的表示和实现 5.4 串的块链式存储表示与实现 串的块链存储结构类型描述如下: #define ChunkSize 10 #define stuff #‘ /*串的结点类型定义*/ typedef struct Chunk{ char ch[ChunkSize]; struct Chunk *next; }Chunk; /*块链串的类型定义*/ typedef struct{ Chunk *head; Chunk *tail; int length; }LinkString; 5.4 串的块链式存储表示与实现 5.4.2 块链串的基本运算 块链串的基本操作的算法实现如下 (1)初始化块链串。 void InitString(LinkString *S) /*初始化块链串*/ { S-length=0; /*将串的长度置为0*/ S-head=S-tail=NULL; /*将串的头指针和尾指针置为空*/ } 5.5 串的模式匹配算法 模式匹配(模范匹配):子串在主串中的定位称为模式匹配或串匹配(字符串匹配) 。模式匹配成功是指在主串S中能够找到模式串T,否则,称模式串T在主串S中不存在。 模式匹配的应用在非常广泛。例如,在文本编辑程序中,我们经常要查找某一特定单词在文本中出现的位置。显然,解此问题的有效算法能极大地提高文本编辑程序的响应性能。 模式匹配是一个较为复杂的串操作过程。迄今为止,人们对串的模式匹配提出了许多思想和效率各不相同的计算机算法。介绍一种主要的模式匹配算法。 5.5.1 Brute-Force模式匹配算法 设S为目标串,T为模式串,且

文档评论(0)

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

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

1亿VIP精品文档

相关文档