读书笔记之《数据结构》---第四章 串

本章目录

  1. 串类型的定义
  2. 串的表示和实现
  3. 串的模式匹配算法
  4. 串操作应用举例

串类型的定义
串是由零个或多个字符组成的有限序列,一般记为s = ‘a1a2a3…an’。
s是串名,单引号内是串的值,n是串的长度,零个字符的串称为空串。

求字符串T在字符串S的位置的算法Index
算法思想:在主串S中从第i个字符起,取长度和T相等的子串与T相比,若相等,则方位位置i,若不相等,则i增加1,直至S中不存在和串T相等的子串为止。
在这里插入图片描述

串的表示和实现

定长顺序存储表示:类似于线性的顺序存储结构,用一组地址连续的存储单元存储串值得字符序列,按照预定义的大小分配固定长度的存储区。

串连接算法Concat
算法思想:串S1与串S2连接,生成串T,则串T的前一段和S1相等,后一段和S2相等
在这里插入图片描述在这里插入图片描述
求子串算法SubString(&Sub,S,pos,len)
算法思想:从S串的pos位置开始,复制长度为len的子串到Sub中
在这里插入图片描述

串的堆分配存储表示:仍以一组地址连续的存储单元存放串值字符序列,但是存储空间是在程序的执行过程中动态分配的。
在这里插入图片描述

串的块链存储表示:和线性表的链式存储结构相类似,采用链表方式存储串值。
在这里插入图片描述

串的模式匹配算法
子串的定位操作通常称为串的模式匹配。

改进的模式匹配算法KPM算法
算法思想:在主串S中对串T进行模式匹配时,当第i位失配时,并不是将T向后滑动一位,而是滑动next[i]位,算法关键是需要知道串T中每一位对应的next值。next值为T的每一位的最长前后缀匹配长度,当第i位失配后,就将T向后滑动 i - next[i]位。这样可以保证移动后的T中next[i]前的子串与S串中的相应位置的子串值都相等。
在这里插入图片描述

next值得计算算法
算法思想:next中的值是T串中的每一位的最长前后缀匹配长度。
在这里插入图片描述

串操作应用举例
1.文本编辑:文本可以看成一个文本串,该串被换页符和换行符划分成若干页和若干行。
2.建立词索引表

猜你喜欢

转载自blog.csdn.net/qq_25744595/article/details/82984741
今日推荐