- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法第三章2012,数据结构与算法,数据结构与算法分析,数据结构与算法pdf,数据结构与算法java,c数据结构与算法,数据结构与算法分析c,数据结构与算法视频,python数据结构与算法,数据结构与算法java版
3.1 字符串抽象数据类型
3.2 字符串的存储结构和类定义
3.3 字符串运算的算法实现
3.4 字符串的模式匹配
3.1字符串抽象数据类型
3.1.1 基本概念
3.1.2 String抽象数据类型
3.1.1 基本概念
字符串:由0个或多个字符的顺序排
列所组成的复合数据结构,简称
“串”。
串的长度:一个字符串所包含的字
符个数。
空串:长度为零的串,它不包含任
何字符内容。
3.1.1.1字符串常数和变量
字符串常数
例如: \n
字符串变量
3.1.1.2 字符
字符(char) :组成字符串的基本单位。
在C和C++中
单字节(8 bits )
采用ASCII码对128个符号(字符集
charset )进行编码
3.1.1.3 字符的编码顺序
为了字符串间比较和运算的便利,字符
编码表一般遵循约定俗成的 “偏序编码
规则”。
字符偏序:根据字符的自然含义,某些
字符间两两可以比较次序。
其实大多数情况下就是字典序
中文字符串有些特例,例如 “笔划”序
3.1.1.4 C++标准string
标准字符串:将C++的string.h函
数库作为字符串数据类型的方案。
例如:char S[M];
串的结束标记:\0
\0是ASCII码中8位BIT全0码,又称
为NULL符。
3.1.1.4 C++标准string(续)
1. 串长函数
int strlen(char *s);
2. 串复制
char *strcpy(char *s1, char*s2);
3.串拼接
char *strcat(char *s1, char *s2);
4 .串比较
int strcmp(char *s1, char *s2);
3.1.1.4 C++标准string(续)
5 .输入和输出函数
6 .定位函数
char *strchr(char *s, char c);
7 .右定位函数
char *strrchr(char *s, char c);
3.1.1.4 C++标准string(续)
3.1.2 String抽象数据类型
字符串类(class String ):
不采用char S[M]的形式
而采用一种动态变长的存储结构。
class String //字符串类
//它的存储结构和实现方法使用了C++标准string(简称标准
串),
//为了区别,类String所派生创建的实例对象,简称‘本串’,或
‘实例串’
//在程序首,要#include string.h和#include iostream.h及
// 及#include stdlib.h,以及#include assert.h
{
//1.字符串的数据表示:
//字符串S 通常用顺序存放,用数组S[]存储,元素的类型为
char
//字符串为变长,使用变量size记录串的当前长度
// 2.使用变量访问字符串:
//字符串变量能参与运算,例如S1 + S2表示两个字符串首尾
拼接在一起
//用数组str[]存储字符串,在内部可以用str[i]访问串的第i个
字符,
// 3.字符串类的运算集:请参看下面的成员函数
private:
char *str; //私有的指针变量,用于指向存储向量str[size+1]
int size ;//本串的当前实际长度
public:
String(char *s = “”); //创建一个空的字符串
String(char *s); // 创建新字符串,并将标准字符串s拷贝为初值
String(const String copy);//拷贝构造函数
~String() // 销毁本串,从计算机存储空间删去本串
//下面是算子的定义,包括赋值算子= 拼接算子+ 和比较算子 等
const String operator= (const char *s );
//赋值操作=,标准串s拷贝到本串
const String operator= (const String s );
//赋值操作=,串s复制到本串
String operator+ (char *s );//拼接算子+,本串拼接标准串s
String operator+ (String s
文档评论(0)