《数据结构与算法》第4章 串

第4章申 41串类型的定义 42串的表示和实现 43串的模式匹配算法
第4章 串 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法

4.1类型的定义 串是由多个或零个字符组成的有限序列,记作 S=‘c1C2C3 (n>=0) 其中,S是串名字,'c1c2c3…cn2是串值 c是串中字符,n是串的长度,表示串中字符 的数目。 空串:零个字符的串称为空串记作“O” 子串:串中任意个连续的字符组成的子序列 主串:包含子申的串 字符在串中的位置:字符在序列中的序号 子串在串中的位置:子串的第一个字符在主串中的位置
4.1 串类型的定义 串是由多个或零个字符组成的有限序列 ,记作 S = ‘c1c2c3…cn ’ (n>=0) 其中,S是串名字,‘ c1c2c3…cn ’是串值 ci是串中字符,n是串的长度,表示串中字符 的数目。 空串:零个字符的串称为空串 记作 “Ø” 子串:串中任意个连续的字符组成的子序列 主串:包含子串的串 字符在串中的位置:字符在序列中的序号 子串在串中的位置:子串的第一个字符在主串中的位置

串相等:p70 空格串:由一个或多个空格组成的串 串的表示:用一对单引号括起来 串的操作:以“串的整体”为操作对象
串相等:p70 空格串:由一个或多个空格组成的串 串的表示:用一对单引号括起来 串的操作:以“串的整体”为操作对象

4.2的表示和实现 1定长顺序存储表示 2堆分配存储表示 3串的块链存储表丞 4.串的基本操作
4.2 串的表示和实现 1.定长顺序存储表示 2.堆分配存储表示 3.串的块链存储表示 4.串的基本操作

1.定长版序存猪表 静态分配 每个串预先分配一个固定长度的存储区域。 实际串长可在所分配的固定长度区域内变动 以下标为0的数组分量存放串的实际长度; 在串值后加入”0”表示结束,此时串长为隐含值 用定长数组描述: # define maXstrlen255/最大串长 typedef unsigned char SString [ MAXsTRLen 11 0单元存放串的长度
1.定长顺序存储表示 静态分配 每个串预先分配一个固定长度的存储区域。 实际串长可在所分配的固定长度区域内变动 ▪ 以下标为0的数组分量存放串的实际长度; ▪ 在串值后加入”\0”表示结束,此时串长为隐含值 用定长数组描述: #define MAXSTRLEN 255 //最大串长 typedef unsigned char SString[MAXSTRLEN + 1] //0号单元存放串的长度

2.堆分配存信表示 以一组地址连续的存储单元存放串值字符 序列; 存储空间动态分配,用malc和fee)来 理 typedef struct ichar*ch int length; JHstring
2.堆分配存储表示 以一组地址连续的存储单元存放串值字符 序列; 存储空间动态分配,用malloc()和free()来 管理 typedef struct {char *ch; int length; }Hstring;

3.牛的块链存储表示 串的链式存储方式 结点大小:一个或多个字符 nP78图42(a)(b) 存储密度=串值所占的存储位(实际分配的存储位
3.串的块链存储表示 串的链式存储方式 结点大小:一个或多个字符 ▪ P78图4.2 (a) (b) ▪ 存储密度=串值所占的存储位/实际分配的存储位

4.的基本操作 串插入 Status strlnsert( HString&s, int pos, HString T 串赋值 Status StrAssign( HString&s, char*chars) 求串长 int StrEngth( HString S 串比较 int StrCompare( HString S, HString T 串联接 Status Concat(( HString&s, HString S1, HString S2) 求子串 Status SubString( HString&sub, HString S, int pos, int len) 串清空 Status Clear String( HString&S) 串定位 删除 置换
4.串的基本操作 串插入 Status StrInsert(HString &S,int pos,HString T) 串赋值 Status StrAssign(HString &S,char *chars) 求串长 int StrLength(HString S) 串比较 int StrCompare(HString S,HString T) 串联接 Status Concat(HString &S,HString S1,HString S2) 求子串 Status SubString(HString &Sub,HString S,int pos,int len) 串清空 Status ClearString(HString &S) 串定位 删除 置换

Status StrInsert(HString &s, int pos, HString T) ∥在串5的第pos个位置前插入T if (pos s length+1)return ERROR; if (T length)t if ((sch=(char ealloc(sch, (S length+T length)*sizeof(char))) exit(OVERFLOW) for(i=s length-1; i>=pos-1; -i) sch[i+T length]=S ch[] for (i=0; K<=Tlength-1; i ++ sch[pos-1+iT.ch[] Slength+=Tlength; s return OK
Status StrInsert(HString &S,int pos,HString T) //在串S的第pos个位置前插入串T { int i; if (posS.length+1) return ERROR; if (T.length){ if (!(S.ch=(char*) realloc(S.ch,(S.length+T.length)*sizeof(char)))) exit(OVERFLOW); for (i=S.length-1;i>=pos-1;--i){ S.ch[i+T.length]=S.ch[i]; } for (i=0; i<=T.length-1;i++) S.ch[pos-1+i]=T.ch[i]; S.length+=T.length; } return OK; }

Status StrAssign(HString &S, char chars) 生成一个值等 chars的5 int i,j; char *C, for(i=0, c=chars; C: ++i, ++c) if isch=NULL,s length=0; 1 else if ((sch=(char *)malloc(i * sizeof(char)) exit(OVERFLOW) for(=0j<=i-1+){ s.chjchars0; Slength=i return OK
Status StrAssign(HString &S,char *chars) 生成一个值等于chars的串S { int i,j; char *c; for (i=0,c=chars;*c;++i,++c); if (!i) {S.ch=NULL; S.length=0;} else { if (!(S.ch=(char *)malloc(i * sizeof(char)))) exit(OVERFLOW); for (j=0;j<=i-1;j++){ S.ch[j]=chars[j];} S.length=i; } return OK; }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据结构与算法》第3章 栈和队列.ppt
- 《数据结构与算法》第2章 线性表.ppt
- 《数据结构与算法》第1章 绪论.ppt
- 《数据结构与算法》程序设计中的思维方式.ppt
- 《数据库基础教程》(实验指导)PDF电子书.pdf
- 《C语言程序设计》课程教学资源(PPT教学课件,共七章).ppt
- 《Delphi步步精通》PPT完整课件 第9章 图像图形应用编程.ppt
- 《Delphi步步精通》PPT完整课件 第8章 多媒体应用编程.ppt
- 《Delphi步步精通》PPT完整课件 第7章 常用组件.ppt
- 《Delphi步步精通》PPT完整课件 第6章 自定义类型.ppt
- 《Delphi步步精通》PPT完整课件 第5章 过程与函数.ppt
- 《Delphi步步精通》PPT完整课件 第4章 数组.ppt
- 《Delphi步步精通》PPT完整课件 第3章 三种结构的程序设计.ppt
- 《Delphi步步精通》PPT完整课件 第2章 Object Pascal语言基础.ppt
- 《Delphi步步精通》PPT完整课件 第1章 Delphi概述.ppt
- 《Delphi步步精通》PPT完整课件 第12章 SQL数据库程序设计.ppt
- 《Delphi步步精通》PPT完整课件 第11章 数据库应用基础.ppt
- 《Delphi步步精通》PPT完整课件 第10章 DLL的应用.ppt
- 《程序设计教程》教学资源(学习资料)PlainText.rtf
- 《程序设计教程》教学资源(PPT讲稿)第9章 文件管理与配置注册表.ppt
- 《数据结构与算法》第5章 数组和广义表.ppt
- 《数据结构与算法》第6章 树和二叉树.ppt
- 《数据结构与算法》第7章 图.ppt
- 《数据结构与算法》第8章 查找.ppt
- 《数据结构与算法》第9章 内部排序.ppt
- 《数据结构与算法》数据结构补充.doc
- 清华大学:《面向对象的理论与C++实践》PDF电子书(共十四章)(王燕).pdf
- 《C语言精彩编程百例》PDF电子书(共四篇).pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第1章 电筒密谈.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第2章 编码与组合.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第3章 布莱叶盲文与二元编码.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第4章 手电筒剖析.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第5章 绕过拐弯的通信.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第6章 发报机与断电器.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第7章 十进制记数法.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第8章 其他进位制记数法.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第9章 二进制数.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第10章 逻辑与开关.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第11章 逻辑门电路.pdf
- 《计算机原理》课程教学资源:机械工业出版社《编码的奥秘》参考书籍(PDF电子书)第12章 二进制加法机.pdf