第2章 国际物流组织与管理.ppt
第4章 串,串的定义,n(n=0)个字符的有限序列 s=a1,a2,an 串名: s 串值: ai(1i n) 串长: n,术 语,空 串n=0的串 子 串串中若干相邻字符组成的子序列 主 串包含子串的串 空格串仅含有空格字符的串(n不为0) 串相等设 s1=a11,an1 s2=a12,an2 若 n1=n2且ai1=ai2(1in1) 则 s1=s2,1void Copy(String / 串值 int length;/ 串长 public: / 抽象数据类型方法声明及重载编译系统默认方法声明: String();/ 构造函数 virtual String();/ 析构函数 String(const String / 从C风格串转换的构造函数,String(LinkList ,串相关操作 void Write(const String / 求串s的第pos个字符开始的长度为len的子串,bool operator =(const String / 重载关系运算符!= ,串构造函数(1) String:String(const char *inString) / 操作结果:从C风格串转换构造新串转换构造函数 length = strlen(inString);/ 串长 strVal = new charlength + 1;/ 分配存储空间 strcpy(strVal, inString); / 复制串值 ,串构造函数(2) String:String(LinkList / 串值以0结束 ,将C+串转换为C语言串 const char *String:CStr() const / 操作结果:将串转换成C风格串 return (const char *)strVal; / 串值类型转换 ,串比较实现 bool operator =(const String ,进一步串操作示例 void Concat(String / 释放copy ,简单字符串模式匹配算法,int SimpleIndex(const String ,while (i = P.Length() return i - j;/ 匹配成功 else return -1;/ 匹配失败 ,首尾字符串模式匹配算法,在简单字符串模式匹配算法中,分析匹配执行时间的最坏情况是不存在匹配,每趟匹配过程都是在比较到模式串的最后一个字符时才发现不能匹配。 为避免在每趟匹配的最后一个字符时才发现不能匹配,可采用从模式串的两头分别进行比较的方法,先比较模式串的第0个字符,再比较模式串的最后一个字符,然后依次比较模式串中第1个个字符、第n-2个个字符、第2个个字符、第n-3个个字符、。若出现不匹配,将模式串P右移一个位置,重复前面的比较过程。首尾匹配算法的优点是可以尽早发现在模式串末尾位置的不匹配,但如果不匹配出现在模式串的中间位置,则这种方法的效率反而会降低。,int FrontRearIndex(const String / 模式串的首尾部字符位置,while (front rear) return startPos;/ 匹配成功 else +startPos;/ 首部或尾部部字符不匹配, / 重新查找匹配起始点 return -1;/ 匹配失败 ,