5.4.1 串的定义和运算
串是由有限个字符a1,a2,a3,a4…组成的序列,记为S=“a1a2a3a4…an”。
串的基本运算:
1.赋值运算(S=S1):将一个串(值)S1传送给串名S
2.求长度运算str_length(S):返回串S的长度值
3.连接运算(S1+S2):将串S1和串S2连接成为一个新串
4.求子串运算函数substr(S,i,j):返回串S中第i个元素开始的j个元素所组成的子串。
5.串比较:比较两个串的大小
(1)仅比较是否相等:
equal(S1,S2);
(2)不仅比较是否相等,还要区分大小(比较ASCII码)
strcmp(S1,S2);
6.插入运算str_Insert(S,i,S1):将子串S1插入到串S的第I字符开始的位置上
7.插入运算str_delete(S,i,j):将子串S插入到串S的第i字符开始的j个字符
5.4.2串的存储
1.顺序串
2.链串
链串的每个结点>=1,结点大小为为每个结点最多存储的元素个数。
结点大小为4的链串:
例:比较两个结点为1 的链串S1和S2实现运算strcmp(S1,S2),并返回-1,0,1 (s1<s2 ,s1=s2,s1>s2)
int strcmp(node *S1,node *S2)
{
node *pa=S1, *Pb=S2;
while(pa!=null&&pb!=null)
if(pa->data==pb->data)
{
pa=pa->next;
pb=pb->next;
}
else if(pa->data<pb->data)
return -1;
else return 1;
if(pa==null)
if(pb==null)
return-1;
else return 0;
else return 1;
}