- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]数据结构第4章4142南京工程学院通信工程学院
StrInsert(HString S,int pos ,HString T) {//为串S重新分配大小等于串S和串T长度之和的存储空间,将S和T串值复制到新分配存储空间中; if (pos 1 || posS.length+1) return ERROR; //参数不合法 if (T.length) { // 若T非空,为串S重新分配存储空间,并插入T if (!(S.ch=(char * ) realloc (S.ch, ( S.length+T.length) * sizeof(char)))) exit(OVERFLOW); //将S的第pos个字符及后面的字符后移,为插入T腾出位置for(i=S.length-1;i=pos-1; --i) S.ch[i+T.length]=S.ch[i]; S.ch[pos-1..pos+T.length-2]=T.ch[0..T.length-1]; //插入T S.length+=T.length; } return OK; }SubString 串插入算法 S.length n S.ch 0 1 pos-1 n-1 n+m-1 S.length n+m S.length n 0 1 pos-1 n-1 S.ch T.ch T.length m 0 1 m-1 为串S重新分配存储空间,并将S复制到新空间 将S的第pos个字符及后面的字符后移,为插入T腾出位置 插入T 修改串长 串插入算法示意图 s t r i n g ^ S 优点是操作方便;不足之处是存储密度较低。 4.2.3 串的块链存储结构 串结构中每个数据元素为一个字符,所以最直接的链式存储结构是每个结点的数据域存放一个字符。 S s t r i n g # # # # ^ 说明 (1) 由于串中的字符个数不一定是每个结点存放字符个数的整倍数,所以,需要在最后一个结点的空缺位置上填充特殊的字符。 (2) 这种存储形式优点是存储密度高于结点大小为1的存储形式;不足之处是做插入、删除字符的操作时,可能会引起结点之间字符的移动,算法实现起来比较复杂。 (3) 存储密度小,运算处理方便,但占用存储量大; 存储密度大,运算处理困难,但占用存储量小. * #define CHUNKSIZE 80 // 可由用户定义的块大小 typedef struct Chunk { // 结点结构 char ch[CUNKSIZE]; struct Chunk *next; } Chunk; typedef struct { // 串的链表结构 Chunk *head, *tail; // 串的头和尾指针 int curlen; // 串的当前长度 } LString; 串的块链存储结构定义如下: 本章主要介绍了如下一些基本概念: 串:串(或字符串)(String)是由零个或多个字符组成的有限序列。 空格串:是由一个或多个空格组成,它的长度为串中空格字符的个数. 空串:是零个字符组成的串,其长度等于零. 主串和子串:一个串的任意个连续的字符组成的子序列称为该串的子串,包含该子串的串称为主串。 串的静态存储结构:类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列的存储方式称为串的顺序存储结构。 本章小结 堆存储结构:用一组空间足够大的、地址连续的存储单元存放串值字符序列,但其存储空间在程序执行过程中能动态分配的存储方式称为堆存储结构。 串的链式存储结构:类似于线性表的链式存储结构,采用链表方式存储串值字符序列的存储方式称为串的顺序存储结构。 课堂练习 一.单项选择题: 1.空串与空格串是相同的,这种说法____ A. 正确 B.不正确 2.串是一种特殊的线性表,其特殊性体现在___ A.可以顺序存储 B.数据元素是一个字符 C.可以链接存储 D.数据元素可以是多个字符 3.设有两个串p和q,求q在p中首次出现的位置的运算称作___ A.连接 B.模式匹配 C.求子串 D,求
文档评论(0)