网站大量收购闲置独家精品文档,联系QQ:2885784924

石河子大学信息科学与技术学院数据结构课件第四章 串.ppt

石河子大学信息科学与技术学院数据结构课件第四章 串.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 串 4.1 串类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 堆分配存储表示 4.2.3 串的块链存储表示 4.3 串的模式匹配算法 * 数据结构 tjm * 《 数据结构》 第四章 4.1 串类型的定义 一、串和基本概念 串(String)是零个或多个字符组成的有限序列。一般记作S=‘a1a2a3…an’,其中S 是串名,双引号括起来的字符序列是串值;ai(1≦i≦n)可以是字母、数字或其它字符;串中所包含的字符个数称为该串的长度。长度为零的串称为空串,它不包含任何字符。 通常将仅由一个或多个空格组成的串称为空白串。 注意:空串和空白串不同,例如‘ ’和‘’分别表示长度为1的空白串和长度为0的空串。 子串:串中任意个连续字符组成的子序列 主串:包含子串的串 子串在主串中的序号(或位置):子串在主串中首次出现时的该子串的首字符对应的主串中的序号 例:设 A=“This is a string” B=“is” 则B是A的子串,A为主串,B在A中的序号(或位置)为3 特别地,空串是任意串的子串,任意串是其自身的子串。 二、串的抽象数据定义 串的抽象数据类型定义见书P71 三、串的基本操作 几种在C语言中常用的串运算: (1)求串长(length): int strlen(char *s); (2)串复制(copy): char *strcpy(char *to,char *from); (3)联接(concatenation): char strcat(char *to,char *from) (4)串比较(compare) int strcmp(char *s1,char *s2); (5)字符定位(index) char strchr(char *s,char c); 例、串的定位index(s,t,pos) 算法思想:在主串中取从第i个字符起、长度和串t相等的子串和t比较,若相等,则求得函数值为i,否则值增1直至S中不存在和串t相等的子串为止。 算法参见P79 4.2 串的表现和实现 4.2.1定长顺序存储表示 定长顺序存储表示,也称为静态存储分配的顺序表。它是用一组连续的存储单元来存放串中的字符序列。所谓定长顺序存储结构,是直接使用定长的字符数组来定义,数组的上界预先给出: #define MAXSTRLEN 255 typedef char Sstring[MAXSTRLEN+1]; 串长度的表示方法: 方法1:用下标为0的元素存储串长度。 方法2:使用一个不会出现在串中的特殊字符在串值的尾部来表示串的结束。例如,C语言中以字符‵\0′表示串值的终结。 4.2.2堆分配存储表示 这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得。所以也称为动态存储分配的顺序表。在C语言中利用函数malloc()、free()来根据实际需要动态分配和释放字符数组空间。这样定义的顺序串类型也有两种形式。 1、typedef char * string; //c中的串相当于此类型定义 2、typedef struct { char *ch; int length; }hstring; 4.2.3 串的块链存储结构 链式存储结构类似线性链表,但需要考虑每个结点是存放一个字符还是多个字符。一个字符的,插入、删除、求长度非常方便,但存储效率低。多个字符的,改善了效率,在处理大字符串时很有效,可用特殊符号来填满未充分利用的结点,但插入、删除不方便。 附设了头尾指针,并给出了当前串的长度的串的链式存储结构称为块链存储结构。(参见P78类型定义) ^ # # g n i r t s head ^ g n i r t s head 串值所占存储位 存储密度= ————————— 实际分配的存储位 4.3 串的模式匹配算法 子串定位运算又称为模式匹配或串匹配,此运算的应用非常广泛。例如,文本编辑程序中,经常要查找某一特定单词出现的位置。解此问题的有效算法能极大地提高文本编辑程序的响应性能。 串的模式匹配定义:在主串中寻找子串在串中的位置。在模式匹配中,子串称为模式串,主串称为目标串。 一、最简单的串匹配算法(算法参见P79) s : a b a b c a b c a c b a b s : a b

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档