1.串中元素的位序是从1开始不是从0开始,和线性表的表示有所不同。
2.如果定义结构体,其中的char ch[MAXSIZE],这个定义的数组是从0开始
3.求字串长度时(若代码如下
//字串范围越界
if(pos+len-1>S.length){
return false;
}
) pos+len-1可以在最大极限的情况下会遍历出整个字串pos+len会漏一些情况。(可以自己举个例子带入),然后这段代码就是for (int i=pos;i<pos+len;i++){
Sub.ch[i-pos+1] = S.ch[i];
Sub.length = len;} 就是将串S中的元素(从字串起始位置开始的)赋值给子串中的元素,让字串从0开始,所以从让i与pos相减。(串SString都是从1开始的)
4.几个表示串的方式
串长的两种表示法:
方案一:用一个额外的变量length来存放串的长度(保留ch[0]);
方案二:用ch[0]充当length;
优点:字符的位序和数组下标相同;
方案三:没有length变量,以字符’\0’表示结尾(对应ASCII码的0);
缺点:需要从头到尾遍历;
方案四——最终使用方案:**ch[0]废弃不用,声明int型变量length来存放串的长度(方案一与方案二的结合)