天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第四章 字符串(String)

字符串( String) 字符串是n(≥0)个字符的有限序列, 记作S:“c;c2cs 99 ●●● 其中,S是串名字 23°° cn”是申值 c1是串中字符 n是串的长度。 例如,S=“ Tsinghua University
字符串 (String) 字符串是 n ( 0 ) 个字符的有限序列, 记作 S : “c1 c2 c3…cn ” 其中,S 是串名字 “ c1 c2 c3…cn ”是串值 ci 是串中字符 n 是串的长度。 例如, S = “Tsinghua University

字符串抽象数据类型和类定义 const int maxLen= 128: class String i int curlen /的当前长度 char *cha /的存储数组 public: String( const String &e ob ) String( const char x init ) String o; aString delete l ch; j
const int maxLen = 128; class String { int curLen; //串的当前长度 char *ch; //串的存储数组 public: String ( const String& ob ); String ( const char * init ); String ( ); ~String ( ) { delete [ ] ch; } 字符串抽象数据类型和类定义

int Length const return curLen; 3 /当前串*this的实际长度 String &operator((int pos, int len ) /取thi从p开始len个字符组成的子串 int operator =- const String &ob) R return strcmp(ch, ob. ch)==0;) /判当前串*this与对象串ob是否相等 int operator! = const String &ob const i return strcmp(ch, ob.ch)!=0;) /判当前串*thi与对象串ob是否不等
int Length ( ) const { return curLen; } //求当前串*this的实际长度 String &operator ( ) ( int pos, int len ); //取*this从pos开始len个字符组成的子串 int operator == ( const String &ob ) { return strcmp (ch, ob.ch) == 0; } //判当前串*this与对象串ob是否相等 int operator != ( const String &ob ) const { return strcmp (ch, ob.ch) != 0; } //判当前串*this与对象串ob是否不等

int operator !O const i return curLen==0; j /判当前串*thi是否空串 String &operator=(String &ob); /将串ob赋给当前串*this String &operator +=(String &ob); /将串ob连接到当前串*th之后 char &operator [(int i ); /取当前串this的第i个字符 int Find( String& pat )const
int operator ! ( ) const { return curLen == 0; } //判当前串*this是否空串 String &operator = (String &ob); //将串ob赋给当前串*this String &operator += (String &ob); //将串ob连接到当前串*this之后 char &operator [ ] ( int i ); //取当前串*this的第 i 个字符 int Find ( String& pat ) const; }

字符串部分操作的实现 String String( const String ob)i /复制构造函数:从已有串ob复制 ch= new charmaxLen+1};/建串数组 if (ch== nULL) cerr<<“ 存储分配错!m”; eXI curlen= ob. curLen;/复制串长度 strcpy(ch,obch);/复制串值
String :: String ( const String& ob ) { //复制构造函数:从已有串ob复制 ch = new char[maxLen+1]; //创建串数组 if ( ch == NULL ) { cerr << “存储分配错! \n”; exit(1); } curLen = ob.curLen; //复制串长度 strcpy ( ch, ob.ch ); //复制串值 } 字符串部分操作的实现

String String( const char * init)i 复制构造函数:从已有字符数组init复制 ch= new charlmaxLen+1l;/创建串数组 if (ch== NULL cerr<“存储分配错!in”; exit(1); curLen= strlen(init);/复制串长度 strcpy( ch, init ) /复制串值
String :: String ( const char *init ) { //复制构造函数: 从已有字符数组*init复制 ch = new char[maxLen+1]; //创建串数组 if ( ch == NULL ){ cerr << “存储分配错 ! \n”; exit(1); } curLen = strlen ( init ); //复制串长度 strcpy ( ch, init ); //复制串值 }

String String (i /构造函数:创建一个空串 ch= new charmaxLen+1l1;/创建串数组 if ( ch== NULL cerr<“存储分配错!m” exit(1) curlen=0 ch0]=0
String :: String ( ) { //构造函数:创建一个空串 ch = new char[maxLen+1]; //创建串数组 if ( ch == NULL ) { cerr << “存储分配错!\n”; exit(1); } curLen = 0; ch[0] = ‘\0’; }

提取子串的算法示例 pos=2, len=3 pos=5, len=4 nfinity infinity 超 posten -1 posten -1 curLen-l ≥ curlen
提取子串的算法示例 pos+len -1 pos+len -1 curLen-1 curLen i n f i n i t y i n f i n i t y pos = 2, len = 3 pos = 5, len = 4 f i n i t y 超出

String& string operator((int pos, int len)& 从串中第pos个位置起连续是取len个字符 /形成子串返回 String* temp= new String;动态分配 if(pos=maxLen lencurLen=0 /返回空串 temp->ch[0]=0; se 提是取子串 if( postlen-1>=curLen len=curlLen-pos;
String& String :: operator ( ) (int pos, int len) { //从串中第 pos 个位置起连续提取 len 个字符 //形成子串返回 String * temp = new String; //动态分配 if (pos= maxLen || lencurLen = 0; //返回空串 temp->ch[0] = '\0'; } else { //提取子串 if ( pos+len -1 >= curLen ) len = curLen - pos;

temp-> curlen=len;/子串长度 for (int i=0,j= pos; ichi=chjl;m传送串数组 temp-> ch[len=“07;/子串结束 return temp 例:串st=“ university”,pos=3,len=4 使用示例 subst=st(3,4) 提取子串 subst=“vers
temp->curLen = len; //子串长度 for ( int i = 0, j = pos; i ch[i] = ch[j]; //传送串数组 temp->ch[len] = ‘\0’; //子串结束 } return * temp; } 例:串 st = “university”, pos = 3, len = 4 使用示例 subSt = st (3, 4) 提取子串 subSt = “vers
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第十章 排序.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第三章 栈和队列.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第六章 树和二叉树.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第九章 查找.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)课程简介(李莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第九章 群体类和群体数据的组织.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第八章 多态性.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 继承与派生.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第六章 数组、指针与字符串.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第九章 文件.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第八章 排序.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第一章 绪论(李晓红).ppt
- 人民邮电出版社:网页及HTML语言.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第一章 电子商务概述(宋文官).ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第七章 典型解决方案.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第三章 EDI电子商务.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第二章 电子商务系统的安全.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第五章 电子商务的效益.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第六章 建立电子商务系统.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第四章 Internet与电子商务.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第1章 基础知识(王成耀).ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第2章 80x86计算机系统组织.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第3章 80x86指令系统.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第4章 汇编语言程序格式.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第5章 基本控制结构.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第6章 过程.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第7章 汇编语言的扩展.ppt
- 人民邮电出版社:高等学校计算机专业教材《80x86汇编语言程序设计》课程教学资源(PPT课件)第8章 输入/输出与中断.ppt
- 《网络技术、商务实务》课程教学大纲(双专科,专业基础课程、专业技术课程、专业选修课).doc
- 人民邮电出版社:高等学校计算机专业《计算机网络安全》课程教材教学资源(PPT课件)第8章 网络协议的安全.ppt
- 人民邮电出版社:高等学校计算机专业《计算机网络安全》课程教材教学资源(PPT课件)第9章 防火墙技术.ppt