77范文网 - 专业文章范例文档资料分享平台

数据结构第四章

来源:网络收集 时间:2018-11-23 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

一、1、串的基本概念

? 串---由零个或多个字符组成的有限序列,一般记为:s='a1a2...an' (n≥0)

? 串中字符的个数n称为串的长度;零个字符,即长度为零的串称为空串,用?或''表示。 空串不等于空格串,空格串:由一个或多个空格组成的串 子串:串中任意个连续的字符组成的子序列 主串:包含子串的串相应地称为主串

相等:两个串的长度相等,并且对应位置的字符都相同。 2、串结构与线性表结构的比较:

逻辑结构:极为相似,区别仅在于串的数据对象约束为字符集。

基本操作:有很大差别1、线性表大多以“单个元素”作为操作对象2、串通常以“串的整体”作为操作对象 3、串类型定义 4、 串赋值StrAssign、串复制Strcopy、串比较StrCompare、求串长StrLength、串联接Concat以及求子串SubString

等六种操作构成串类型的最小操作子集。

1、 StrAssign (&T, chars) 初始条件:chars 是字符串常量。操作结果:把 chars 赋为 T 的值。等价于

C语言中的strset函数 2、 StrCopy (&T, S) 初始条件:串 S 存在。操作结果:由串 S 复制得串 T。等价于C语言中的strcpy

函数 3、 StrCompare (S, T) 初始条件:串 S 和 T 存在。操作结果:若S>T,则返回值>0; 若S=T,则返回值=0; 若S<T,则返回值<0。等价于C语言中的strcmp函数(按ASCII码值进行大小比较) 4、 StrLength (S) 初始条件:串 S 存在。操作结果:返回 S 的元素个数,称为串的长度。等价于C语言中的strlen函数

5、 Concat (&T, S1, S2) 初始条件:串 S1 和 S2 存在。操作结果:用T返回由S1和S2联接而成的新串。

例如: Concate( T, ?man?, ?kind?) 求得 T = ?mankind? 等价于C语言中的strcat函数

6、 SubString (&Sub, S, pos, len) 初始条件:串S存在,1≤pos≤StrLength(S) 且 0≤len≤

StrLength(S)-pos+1。 操作结果:用Sub返回串S的第pos个字符起长度为len的子串。子串为“串”

中的一个字符子序列。例如:SubString( sub, 'commander', 4, 3),求得sub = 'man';

SubString( sub, 'commander', 1, 9),求得sub = 'commander'; SubString( sub, 'commander', 9, 1),求得sub = 'r';

起始位置pos和子串长度len之间存在约束关系,pos+len<=StrLength(S)+1

SubString('student', 5, 0) = ? ——长度为0的子串为“合法”串

5、Index (S, T, pos) 初始条件:串S和T存在,T是非空串, 1≤pos≤StrLength(S)。操作结果:若主串 S 中存在和串 T 值相同的子串, 则返回它在主串 S 中第pos个字符之后第一次出现的位置;否则函数值为0。 “子串在主串中的位置”指子串中的第一个字符在主串中的位序。

假设 S = ?abcaabcaaabc?, T = ?bca? Index(S, T, 1) =2 Index(S, T, 3) = 6 Index(S, T, 8) = 0 6、Replace (&S, T, V) 初始条件:串S, T和V均已存在,且T是非空串。

操作结果:用 V 替换主串 S 中出现的所有与(模式串)T 相等的不重叠的子串。

例如:假设 S = ?abcaabcaaabca?,T = ?bca?若 V = ?x?, 则经置换后得到 S = ?abcaabcaaabca?

7、StrInsert (&S, pos, T) 初始条件:串S和T存在, 1≤pos≤StrLength(S)+1。操作结果:在串S的第pos个字符之前插入串T

例如:S = 'chater',T = 'rac',则执行 StrInsert(S, 4, T)之后得到S = 'cha racter'? 二、串的表示和实现

1、定长顺序存储表示:用一组地址连续的存储单元存储串值的字符序列,称为顺序串。可用一个数组来表示。 特点:①串的实际长度可在这个预定义长度的范围内随意设定,超过预定义长度的串值则被舍去,称之为“截断” 。②按这种串的表示方法实现的串运算时,其基本操作为 “字符序列的复制”

顺序存储结构中,串操作的基本操作为“字符序列的复制”,其时间复杂度基于复制的字符序列的长度。 2、堆分配存储表示:特点:仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执

行过程中动态分配而得的。 串操作实现的算法为:先为新生成的串分配一个存储空间,然后进行串值的复制。 3、串的模式匹配算法

课堂练习

已知:a=?THIS?, f=?A SAMPLE?, c=?GOOD?, d=?NE?, b=? ?,

1、s=Concat(a, Concat(SubString(f, 2, 7), Concat(b, SubString(a, 3, 2)))), 2、t=Replace(f, SubString(f, 3, 6), c),

3、u=Concat(SubString(c, 3, 1), d), g=?IS?, 4、v=Concat(s, Concat(b, Concat(t, Concat(b, u)))),

试问:s, t, v, StrLength(s), Index(v, g), Index(u, g)各是什么?

1、?THIS SAMPLE IS? 2、?A GOOD? 3、?ONE? 4、v=?THIS SAMPLE IS A GOOD ONE? 课后作业

P28:4.5(要求:写出每一个函数执行后的结果)

1. 已知:s=?(XYZ)+*?,t=?(X+Z)*Y?。试利用联接、求子串和置换等基本操作,将s转化为t。 SubString(&s1, s, 3, 1); 'Y' SubString(&s2, s, 6, 1); '+' SubString(&s3, s, 7, 1);'*' Replace(&s, s1, s2); '(X+Z)+*' Concat(&s4, s3, s1);

'*Y'

Concat(&t, SubString(&s5, s, 1, 5), s4);

'(X+Z)*Y'

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据结构第四章在线全文阅读。

数据结构第四章.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/303243.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: