收藏 分享(赏)

串的定义及其基本运算.ppt

上传人:11xg27ws 文档编号:12362226 上传时间:2021-12-11 格式:PPT 页数:27 大小:262.50KB
下载 相关 举报
串的定义及其基本运算.ppt_第1页
第1页 / 共27页
串的定义及其基本运算.ppt_第2页
第2页 / 共27页
串的定义及其基本运算.ppt_第3页
第3页 / 共27页
串的定义及其基本运算.ppt_第4页
第4页 / 共27页
串的定义及其基本运算.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、4 1串的定义及其基本运算4 2串的定长顺序存储及基本运算4 3串的堆存储结构 第四章串 作业6 P235 1 2 4 1 1串的定义定义 串 string 是由零个或多个任意字符组成的字符序列 又称为字符串 characterstring 一般记为 4 1串的定义及其基本运算 s a1a2a3 an 说明 1 其中s是串名 用双引号括起来的字符序列是串的值 2 ai 1 i n 可以是字母 数字或其他字符 n为串中字符的个数 称为串的长度 i是序号 3 一个长度为零的串称为空串 表示为s 或 4 空格也是合法字符 空格串是字符 为空格的串 几个术语 空串 长度为0的字符串 空格串 由空格字符

2、组成的字符串 长度 1 子串 字符串中任意个连续的字符构成的序列 母串 包含该子串的字符串 两串相等 两个字符串的长度相等且各对应位置上的字符都相同 字符的位置 从1开始子串的位置 该子串第一个字符的位置 4 1 2串的基本运算 1 求串的长度StrLength s 2 串赋值StrAssign s1 s2 3 两个串的连接StrConcat s1 s2 s 或StrConcat s1 s2 4 求某串的子串SubStr s i len 5 串比较StrCmp s1 s2 6 子串定位StrIndex s t 7 插入子串StrInsert s i t 8 删除子串StrDelete s i

3、len 9 置换StrRep s t r 4 2 1存储结构的实现 defineMAXSIZE256typedefstruct chardata MAXSIZE intcurlen SeqString 4 2串的定长顺序存储及基本运算 第一种 第二种 defineMAXSIZE256chars MAXSIZE 第三种 defineMAXSIZE256chars MAXSIZE 1 4 2 2运算实现 采用第二种表示串长的方式 1 求串的长度StrLength s intStrLength chars intlen 0 while s len 0 len returnlen 2 串赋值StrAs

4、sign s1 s2 voidStrAssign s1 s2 chars1 s2 intj 0 while s2 j 0 s1 j s2 j j s1 j 0 3 两个串的连接StrConcat1 s1 s2 s 4 求某串的子串SubStr s i len 5 串比较StrCmp s1 s2 4 2 3模式匹配 设s和t是给定的两个串 在主串s中查找子串t的过程称为 其中t也称为模式 为运算方便 字符串采用定长存储 且用第三种方式表示串长 defineMAXSIZE256chars MAXSIZE 1 1 简单的模式匹配算法 BF算法 1 算法思想 例 主串S acabaabaabcacaa

5、bc 模式串t abaabcac if s i t j i j if s i t j i回溯到本趟开始的下一个 j回溯到1 s acabaabaabcacaabct abaabcac s acabaabaabcacaabct abaabcac s acabaabaabcacaabct abaabcac 2 算法实现循环条件 什么时候回溯 回溯时i j如何计算 如何判断匹配是否成功 匹配成功时 返回的起始位置如何计算 见P59的算法4 4 2 改进后的模式匹配算法 KMP算法 s acabaabaabcacaabct abaabcac s acabaabaabcacaabct abaabcac

6、1 KMP算法思想 i不回溯 j也不是回溯到1 而是回溯到k 也就是模式t向右滑动到某个位置k 2 k位置的确定 next函数 用next函数来确定k的值 即k next j 例4 1 求模式串 abaabcac 的next函数值 0 1 1 2 2 3 1 2 练习 求下列模式串的next函数值AAABAABAACAABABAABRACADABRAASSTACASTRA 例 主串S aabcbabcaabcaababc 模式串t abcaababc 0 1 1 1 2 2 3 2 3 s aabcbabcaabcaababct abcaababc s aabcbabcaabcaababct

7、abcaababc s aabcbabcaabcaababct abcaababc s aabcbabcaabcaababct abcaababc s aabcbabcaabcaababct abcaababc 3 KMP算法实现 循环条件 什么时候回溯 回溯时i j如何计算 如何判断匹配是否成功 匹配成功时 返回的起始位置如何计算 见P61的算法4 5 4 如何求next函数 next 1 0 设next i 1 k 如何求next i 令j i k next j 0 1 第一种情况 k 0 next i k 1 第二种情况 t k t j 3 next i k 1 第三种情况 t k t

8、j 3 1 回溯k next k 直至t j t k 1 2 回溯k next k 直至k 0 next i k 1 next i k 1 0 i 2 j 1 k next 1 0 next i k 1 1 i 3 j 2 k next 2 1 t k t j k回溯 1 1 1 k next 1 0 next i k 1 1 i 4 j 3 k next 3 1 t k t j k回溯 k next 1 0 next 4 k 1 1 求next i i 1 next i 0 i 5 j 4 k next 4 1 t k t j next i k 1 2 2 i 6 j 5 k next 5

9、2 t k t j k回溯 2 3 k next 2 1 t k t j next i k 1 2 i 7 j 6 k next 6 2 t k t j next i k 1 3 i 8 j 7 k next 7 3 t k t j k回溯 k next 3 1 t k t j next i k 1 2 2 i 9 j 8 k next 8 2 t k t j next i k 1 3 3 算法实现 voidGetNext chart intnext inti 2 j k next 1 0 j i 1 k next j while i t 0 if k 0 t k t j next i k 1

10、 i j i 1 k next j elsek next k k回溯 理解P63算法4 6 作业 根据NEXT算法求下列模式串的next函数值 写出过程 AAABABRACADABRAASSTACASTRA 练习 根据NEXT算法求下列模式串的next函数值 写出过程 AABAACAABABA 4 3串的堆存储结构 4 3 1串名的存储映像1 带串长度的索引表 typedefstruct charname MAXNAME intlength char stradr LNode 2 带末尾指针的索引表 typedefstruct charname MAXNAME char stradr enadr ENode 3 带特征位的索引表 typedefstruct charname MAXNAME inttag union char stradr charvalue 4 uval TNode 4 3 2堆存储结构 基本思想 在内存中开辟能存储足够多的串 地址连续的存储空间作为应用程序只所有串的可利用存储空间 称为堆空间 charstore SMAX 1 intfree typedefstruct intlength intstradr Hstring

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报