贵州民族学院数据结构课件 第四章.pptVIP

  • 2
  • 0
  • 约9.51千字
  • 约 60页
  • 2019-05-06 发布于广东
  • 举报
第四章 串 第四章 串 4.1 串的概念 4.2 串的存储结构和类型定义 4.3 串操作应用举例 4.1 串的概念 1、基本概念 串(字符串)是一种特殊的线性表,其每个结点只含一个字符 串(String):零个或多个字符组成的有限序列。一般记作:S =“a1a2a3…an”(n≥0) 其中: S是串名 双引号括起来的字符序列是串值 ai(1≦i≦n)称为串的元素 ,可以是字母、数字或其它字符 4.1 串的概念 1、基本概念 串的例 “abcd” “####” “123” “This is a string” “5+3” 1、基本概念 串中所包含的字符个数称为该串的长度 长度为零的串称为空串(Empty String),它不包含任何字符 通常将仅由一个或多个空格组成的串称为空格串(Blank String) 注意:空串和空白串的不同,例如“ ”和“”分别表示长度为1的空格串和长度为0的空串 串相等:称两个串是相等的,是指两个串的长度相等且对应字符相等 串变量和串常量:在程序中使用的串的两种形式 串常量与整常数、实常数一样,在程序中只能被引用不能改变它的值,即只能读不能写 串的大小 字符集:字符的机器内部表示,它规定了串中能包含的字符。常用字符集:ASCII、EBCDIC 字符的大小:由字符在字符集中的序号决定 串的大小:将串按字典顺序排列,根据其在字典顺序中的位置来决定其大小 3、串基本运算 ⑴求串长 length(S) 操作条件:串S存在 操作结果:求出串S的长度 ⑵ 赋值 (S←T) 操作条件: S是一个串变量,T或者是一个串常量,或者是一个串变量(通常T是一个串常量时称为串赋值,T是一个串变量称为串拷贝) 操作结果:将T的串值赋值给S, S原来的值被覆盖。 ⑶连接 :(T←S1//S2或S1//S2) 操作条件:串S1,S2存在 操作结果:两个串的连接就是将一个串的串值紧接着放在另一个串的后面,组成一个串。前者是产生新串T,S1和S2不改变;后者是在S1的后面连接S2的串值,S1改变, S2不改变 例如: S1=“he”,S2=“ bei”,前者操作结果是T=“he bei”, S1 ,S2不变;后者操作结果是S1=“he bei”, S2不变。 ⑷求子串(substr (S,T,i,j) ) 操作条件:串S存在,1≤i≤length(T),0≤j≤length(T)-i+1 操作结果:返回从串T的第i个字符开始的长度为 j 的子串S。j=0得到的是空串 例如:substr(s,"abcdefghi",3,4) s= “cdef” ⑸串比较 strcmp(S,T) 操作条件:串S,T存在 操作结果:若S=T,操作返回值为0;若ST, 返回值0;若ST, 返回值0 ⑹判断是否空串empty(S) 操作条件:串S存在 操作结果:若S为空返回TRUE,否则返回FALSE ⑺清空串clearstr(S) 操作条件:串S存在 操作结果:将S置为空串 ⑻子串定位 index(S,T) 找子串T在主串S中首次出现的位置 操作条件:串S,T存在 操作结果:若T∈S,则操作返回T在S中首次出现的位置,否则返回值为0 如:index("abcdebda","bc")=2 index("abcdebda","ba")=0 ⑼插入 insert(S,i,T) 操作条件:串S,T存在 0≤i≤length(S)+1 操作结果:将串T插入到串S 的第i个字符后,S的串值发生改变 ⑽删除 delete(S,i,j) 操作条件:串S存在,1≤i≤length(S),0≤j≤length(S)-i+1 操作结果:删除串S 中从第i个字符开始长度为j的子串,S的串值改变 ⑾置换 replace(S,T,R)或replace(S,i,j,T) 操作条件:串S,T,R存在,T非空 操作结果:用串R替换串S中出现的所有与串T相等的不重叠的子串,S的串值改变 以上是串的一些基本操作 其中前5个操作是最为基本的,它们不能用其他的操作来组合,通常将这5个基本操作称为最小操作集 4.2 串的存储结构和类型定义 串是特殊的线性表,其存储结构与线性表的存储结构类似 组成串的结点是单个字符,因此其存储与一般的线性表又不太相同 串有三种机内表示方法 4.2.1 定长顺序存储 4.2.2 索引存储 4.2.3 块链式存储 4.2.1 定长顺序存储 也称为静态存储分配的顺序串 它是用一组连续的存储单元来存放串中的字符序列 所谓定长顺序存储结构,是直接使用定长的字符数组来定义,数组的上界预先给出: #define M 256

文档评论(0)

1亿VIP精品文档

相关文档