第03章 数据结构串Java版第三版.pptVIP

  • 5
  • 0
  • 约2.55千字
  • 约 33页
  • 2017-12-30 发布于湖北
  • 举报
第03章 数据结构串Java版第三版.ppt

第3章 串 3.1 串抽象数据类型 3.2 串的表示和实现 3.3 串的模式匹配 目的和要求 目的:串作为特殊线性表的实现与应用。 内容:字符串的基本概念,串抽象数据类型,顺序和链式两种存储结构存储串的特点;采用顺序存储结构实现串的各种操作算法;两种串的模式匹配算法及应用:Brute-Force算法和KMP算法。 要求:掌握顺序串类的基本操作实现方法,掌握串 的模式匹配算法及应用。 重点:串数据类型的各种操作实现,两种串的模式 匹配算法及应用。 难点:KMP模式匹配算法,next数组在KMP算法中 的作用及产生过程。 实验:顺序串类的基本操作及串的模式匹配算法。 3.1 串抽象数据类型 3.1.1 串的基本概念 串定义。s= 子串。at是data的子串。 串比较。 两个串可比较是否相等,也可比较大小。 3.1.2 串抽象数据类型 public interface SString { int length(); //返回串的长度 char charAt(int i) //返回第i(i≥0)个字符 SString concat(SString str); //返回与str串连接生成串 SString substring(int begin, int end); //返回串中字符序号从begin至end-1的子串 void setCharAt(int i, char ch) //设置第i个字符为ch SString insert(int i, SString str)//在第i个字符处插入str串 SString delete(int begin, int end) //删除从begin到end-1的子串 int indexOf(SString pattern); //返回模式串pattern在串中的首次匹配位置 } 3.2 串的表示和实现 3.2.1 串的存储结构 3.2.2 字符串类String 3.2.3 字符串类StringBuffer 3.2.1 串的存储结构 串的顺序存储结构 串的链式存储结构 3.2.2 常量字符串类String String类声明 public final class MyString implements ComparableMyString,java.io.Serializable { private final char[] value; //字符数组,私有最终变量,只能赋值一次 } 【例3.1】获得整数和实数字符串表示的数值。 2.连接串 3. 求子串 4. 比较串相等与大小 5. String串的插入、删除操作 (1)在s1串的i位置插入s2串 (2)删除串中序号从begin至end-1的子串 【例3.2】获得一个整数的二进制或十六进制形式字符串。 3.2.3 变量字符串类StringBuffer public final class MyStringBuffer implements java.io.Serializable { private char[] value; //字符数组 private int len; //串长度 } 1. 插入串 2. 删除子串 3.3 串的模式匹配 3.3.1 Brute-Force算法 3.3.2 KMP算法 3.3.1 Brute-Force算法 Brute-Force算法描述与实现 2.模式匹配应用 (1)替换子串 (2)删除子串 3. Brute-Force算法分析 3.3.2 KMP算法 目标串不回溯 2. KMP算法描述(a)(b) 2. KMP算法描述(c) 2. KMP算法描述(d) 3.求next数组 表3-1 模式串abcabc的next数组 5. 计算next数组的递推算法 表3-2 模式串abcabdabcabcaa的next数组 6.改进next数组 6.改进next数组 表3-3 模式串abcabc改进的next数组 图3-18 KMP模式匹配过程(a~b) 图3-18 KMP模式匹配过程(c~e) 表3-4 模式串abcabdabcabcaa改进的next数组 7.K

文档评论(0)

1亿VIP精品文档

相关文档