《ds字符串》课件.pptVIP

  • 3
  • 0
  • 约4.33千字
  • 约 41页
  • 2018-11-12 发布于广西
  • 举报
定义next[j]如下: 其它情况 当j=0时 由此定义可推出next的函数值: a b a a b c a c -1 0 0 1 1 2 0 1 模式串 next[j] 0 1 2 3 4 5 6 7 j * *  “串”(String)是字符串的简称,它也是一种特殊的线性表,由它组成的线性表的数据元素最为简单,仅为单个字符. 串的基本概念 串的存储结构 串的基本运算 模式匹配 1 2 3 4 (1)串是由零个或多个字符组成的有序序列。 (2)值为空格的字符串不同于空串。 (3)值为单个字符的字符串不同于单个字符。 (4)一个串中任意多个连续的字符组成的子序 列称为该串的子串。包含该子串的串称为 主串。 (5) 子串在主串中的位置指的是该子串的第一个 字符在主串中的位置。 (6) 两个串相等指两个串中的字符序列一一对应 (7) 一个串的长度指的是串中所包含的字符个数 (8) 在C语言中,串是由双引号括起来的,双引号 本身不是串的组成部分。 举例 S1 = “I am a student” S2 = “child” S3 = “a” S4 = “student” S5 = “student ” S1是S3和S4的主串,子串S3在S1中的位置为3,子串S4在S1中的位置为8。S4的长度是7,S5的长度是8,S4和S5不相等,S5不是S1的子串。 串的基本概念 串的存储结构 串的基本运算 模式匹配 1 2 3 4 1.串的顺序存储结构 2.串的链式存储结构 3.串的索引存储结构 串的顺序存储结构简称为顺序串。顺序串中的字符被顺序地存放在内存的一片相邻的单元中。 在C语言中,用一个特定的、不会出现在串中的字符作为串的终结符,这就是‘\0’ T h i s i s a s t r i n g \0 …… 0 Maxsize-1 串的顺序存储形式 #define maxsize 32 typedef struct { char ch[maxsize]; int curlen; } seqstring;   链串的定义与单链表类似,串的链接存储形式为 typedef struct linknode { char data; struct linknode *next; } linkstring; a b c d e f g a b c d e f g \0 a b c x f g \0 \0 y z d e 结点大小为1的链串 结点大小为4的链串 结点大小为4的链串在第三个字符后插入“xyz” 该方法是用串变量的名字作为关键字组织名字表,该表中存储的是串名和串值之间的对应关系。名字表一般是顺序存放的。 ... ... ... 3 s2 7 s1 .. a b c d e f g b c d .. 带长度的名字表 name length stadr 串的索引存储形式--带长度的名字表 typedef struct { char name[maxsize]; int length; char *stadr; } lnode ... ... ... 3 s2 7 s1 .. a b c d e f g b c d .. 带长度的名字表 name length stadr ... ... ... s2 s1 .. a b c d e f g b c d .. 带末指针的名字表 name enadr stadr 串的索引存储形式--带末指针的名字表 typedef struct { char name[maxsize]; char *stadr,*enadr; } enode; bcd\0 ... ... 1 s2 0 s1 .. a b c d e f g \0 带特征位的名字表 name tag stadr/value .. 串的索引存储形式--带特征位的名字表 typedef struct { char name[maxsize]; union { char *stadr; char value[4];} uval; } tagnode ... ... ... 14 16 s2 0 13 s1 ....... procedure... var i:integer 在索引存储表示下, 串值空间的动态分配示意 name length stadr 0 14 free 串的基本概念 串的存储结构 串的基本运算 模式匹配 1 2 3 4 (1) 赋值 (2) 联接 (3) 求

文档评论(0)

1亿VIP精品文档

相关文档