数据结构 课件4.pptVIP

  • 11
  • 0
  • 约1.02万字
  • 约 26页
  • 2017-02-09 发布于河南
  • 举报
数据结构 课件4

数据结构---第四章 串 第四章 串 4.1 串的概念和基本操作 4.2 串的存储结构 4.3 串基本操作的实现 4.3 例题解析 4.1 串的概念和基本操作 4.1.1 串的概念 串(字符串):是由零个或多个字符组成的有限序列。记作:s = ‘a1a2…an’ (n?0) 串长:串中字符的个数n。 子串和主串:串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串称为主串。 串相等:两个串长度相等,且对应位置的字符都相等。 空串和空白串:空串不包含任何字符,表示为?; 空白串由一个或多个空格组成,如‘ ’。 串是特殊的线性表,其数据元素是单个的字符。 4.1.2 串的基本操作 通常以“串的整体作为”操作对象 (1)用串变量赋值 assign(s,t) 用串常量赋值 creat(s,ss) (2)比较函数 compare(s,t) (3)求长函数 length(s) (4)连接函数 concat(s,t) (5)求子串函数 substr(s,start,len) (6)定位函数 index(s,t) 定位s中第一次出现的子串t(非空) (7)置换函数 replace(s,t,v) 以v置换s中所有的子串t(非空) (8)插入子串 insert(s,pos,t) (9)删除子串 delete(s,pos,len) 4.2 串的存储结构 4.2.1 顺序存储结构 1)定长顺序存储 串空间+串长 CONST m={串的最大长度} TYPE strtp=RECORD ch: PACKED ARRAY[1..m] OF char; curlen: 0..m END; 2) 堆结构存储 Pascal方式 系统分配一个大容量连续存储空间作为串值的可利用空间。每个串使用时动态申请一组地址连续的存储单元。 VAR store:ARRAY[1..maxsize] OF char; TYPE {串的描述子} stringtype=RECORD length, stadr:integer END; 堆结构存储的特点: 通过串名存储映象访问串值 动态分配存储空间,对串长没有限制 要使可利用空间的使用更加有效,回收废弃的旧串和申请新串空间需进行动态存储管理。 C方式 灵活的内存使用机制 每个字符串对应一个“堆” 动态管理利用malloc()、realloc()、free()等实现 4.2.2 块链存储方式 字符串块链表的头指针+串长 CONST chunksize=用户定义的结点大小; TYPE pointer=^chunk; chunk=RECORD ch: ARRAY[1..chunksize] OF char; { ch:char; } next:pointer END; linkstringtp=RECORD head:pointer; length:integer END; 4.3 串基本操作的实现 串在使用上以采用顺序存储结构为主 串操作基于“字符序列的复制” 在定长顺序存储结构下,串值长度上溢时,通常用截尾法进行处理 重点:模式匹配的简单算法和改进算法(KMP算法) 模式匹配:即子串的定位操作。

文档评论(0)

1亿VIP精品文档

相关文档