文档介绍:数据结构与算法
-5
1
精选编辑ppt
字符串 (String)
字符串是n ( 0 ) 个字符的有限序列,记作 S : “c1c2c3…cn”
其中,S是串名字
“c1c2c3…cn”是串值
ci是串中字符
n是串的长度。
2
精选编辑ppt
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
精选编辑ppt
String &operator ( ) ( int pos, int len );
int operator == ( const String &ob )
const { return strcmp (ch, ) == 0; }
int operator != ( const String &ob )
const { return strcmp (ch, ) != 0; }
int operator ! ( )
const { return curLen == 0; }
String &operator = ( const String &ob );
String &operator += ( const String &ob );
char &operator [ ] ( int i );
int Find ( String pat ) const;
}
4
精选编辑ppt
String::String ( const String &ob ) {
//复制构造函数:从已有串ob复制
ch = new char[maxLen+1];
if ( !ch ) {
cout << “Allocation Error\n”;
exit(1);
}
curLen = ;
strcpy ( ch, );
}
字符串部分操作的实现
5
精选编辑ppt
String::String ( const char *init ) {
//复制构造函数: 从已有字符数组*init复制
ch = new char[maxLen+1];
if ( !ch ){
cout << “Allocation Error\n”;
exit(1);
}
curLen = strlen (init);
strcpy ( ch, init );
}
6
精选编辑ppt
String::String ( ) {
//构造函数:创建一个空串
ch = new char[maxLen+1];
if ( !ch ) {
cout << “Allocation Error\n”;
exit(1);
}
curLen = 0;
ch[0] = ‘\0’;
}
7
精选编辑ppt
提取子串的算法示例
pos+len -1 pos+len -1
curLen-1 curLen
8
精选编辑ppt
String &String::
operator ( ) ( int pos, int len ) {
//从串中第pos个位置起连续提取len个字符
//形成子串返回
if ( pos < 0 || pos+len -1 >= maxLen
|| len < 0 ) {
temp