1.串定义:略,可以记作:s="a1a2...an"

2.空串
不含任何字符的串称为空串,它的长度n=0,记为s=“”。 

3.空白串
含有一个或多个空格的串,称为空白串,它的长度是串中空格字符的个数,记为s= “?”。注意与空串的区别。

 

4.子串、主串
若一个串是另一个串中连续的一段,则这个串称为另一个串的子串,而另一个串相对于该串称为主串。例如,串s1=“abcdefg”,s2=“fabcdefghxyz”,则s1为s2的子串,s2相对于s1为主串。

另外,空串是任意串的子串,任意串是自身的子串。通常称字符在序列中的序号为该字符在串中的位置,子串在主串的位置则以子串的第一个字符在主串中的位置来表示。

 

 

5.串的基本操作都有哪些?

1. 串复制 strcpy(S,T)

表示将T串的值赋给S串。

2. 联接 strcat(S,T)

表示将S串和T串联接起来,使T串接入S串的后面。

3. 求串长度 strlen (T)

求T串的长度。

4.子串 strsub(S,i,j, T)

表示截取S串中从第i个字符开始连续j个字符,作为S的一个子串,存入T串。

5.串比较大小 strcmp(S,T)

比较S串和T串的大小,若S<T,函数值为负,若S=T,函数值为零,若S>T,函数值为正。

6. 串插入 strins (S,i,T)
在S串的第i个位置扦入T串。

7. 串删除 strdel(S,i,j)

删除串S中从第i个字符开始连续j个字符。

8. 求子串位置 index(S,T)

求T子串在S主串中首次出现的位置,若T串不是S串的子串,则位置为零。

9. 串替换 replace (S,i,j,T)

将S串中从第i个位置开始连续j个字符,用T串替换。

利用上述九种基本运算还可以组合成字符串的其他有关操作.

 

串的存储结构:

 

 

串的顺序存储

串的顺序存储结构,也称为顺序串,与第二章介绍的顺序表类似,就是用一组地址连续的存储单元依次存放串的各个字符。但由于串中元素全部为字符,故存放形式与顺序表有所区别。
计算机的编址方式:
字节编址(以字节为存取单位)
编址(以字为存取单位)紧缩存储/非紧缩存储
1.串的非紧缩存储
一个存储单元中只存储一个字符,和顺序表中一个元素占用一个存储单元类似。具体形式见图4-1,设串S=“How do you do”。 
 
    2.串的紧缩存储
根据各机器字的长度,尽可能将多个字符存放在一个字中。假设一个字可存储4个字符,则紧缩存储具体形式.

  从上面介绍的两种存储方式可知,紧缩存储能够节省大量存储单元,但对串的单个字符操作很不方便,需要花费较多时间分离同一个字中的字符,运算效率较低。而非紧缩存储的特点刚好相反,操作方便,但将占用较多的内存单元。
两种方式的共同缺点是:插入或删除一个字符的相应算法效率较低(顺序结构的共同缺点。)
3.串的字节存储

 

 

h o w   d o   y o u   d o  

 

 

串的链式存储 

1结点大小为1的链式存储
和前面介绍到的单链表一样,每个结点为一个字符,链表也可以带头结点。 
S=“ABCDEFGHI”的存储结构具体形式见下图 

 

 

 

 

posted on 2012-06-04 22:03  沙漠之泉  阅读(267)  评论(0编辑  收藏  举报

导航