假设以单链表结构表示串,每个结点数据域存放一个字符,且附设头结点。试编写算法,实现串的下列 基本操作: StrAsign(S,chars);StrCopy(S.T) ;StrCompare(S.T) :StrLength(S); StrCat(S.T);SubString( Sub,S,pos,len)。
时间: 2023-06-08 11:04:49 浏览: 261
带头结点的单链表的c算法实现
好的,我可以帮你回答这个问题。
以下是每个操作的具体实现:
1. StrAsign(S, chars): 将字符串 chars 赋给 S,即把 chars 中的字符逐个赋给 S 的单链表结构,且最后一个结点的 next 指针为 NULL。
2. StrCopy(S.T): 将字符串 T 复制到串 S 中,即先清空 S 中原有内容,然后把 T 的字符逐个赋给 S 中的结点。
3. StrCompare(S.T): 比较串 S 和串 T 的大小。从两个串的第一个字符开始比较,如果相同,继续比较下一个字符,直到有不同的字符出现,或一个串已经比较完。如果两个串完全相同,则返回 0,如果 S>T,则返回 1,如果 S<T,则返回 -1。
4. StrLength(S): 返回串 S 的长度,即单链表结构中结点的个数(不包括头结点)。
5. StrCat(S.T): 将串 T 拼接到串 S 的末尾,即找到 S 中最后一个结点,然后把 T 的字符逐个赋给新的结点。
6. SubString(Sub, S, pos, len): 截取 S 中从 pos 开始的 len 个字符,并把结果存储在 Sub 中。需要遍历 S 中的结点,找到第 pos 个结点,然后把后面的 len 个字符逐个赋给 Sub 中的结点。注意,pos 和 len 都是从 1 开始计数的。
希望这些操作能够帮助到你。如果还有其他问题,可以继续问我。
阅读全文