考研之数据结构(第四章总结)

1.串(string):由零个或者多个字符组成的有限序列。
2.串的长度:串中字符的个数。
3.含有零个元素的串叫空串,由一个或多个空格组成的串称为空格串。
4.子串:串中任意连续的字符组成的序列。
5.主串:含有子串的串。
6.用子串第一个字符的位置作为子串在主串中的位置。
7.当两个串的长度相等并且各个对应位置的字符都相等时,两个串相等。
8.串值:双引号括起来的子串。
9.KMP算法的优点:主串指针不回溯。
10.串的存储表示:
(1)串的定长顺序存储表示
与顺序表的定义类似,使用定长存储串只需要分配一片连续的内存,即定义一个字符串类型的数组来存储字符即可完成在连续内存区域中存储的目的。在设置长度的时候,需要多留一位(字符串首位)以存储字符串的长度。

(2)堆分配存储表示
以一段连续分配的地址作为存储字符串的地址,与定长不同的是,要求使用malloc()与free()函数进行内存的动态添加与删除。如果分配地址成功,要求返回一个指向起始地址的指针ch,方便进行后续内存的访问。
(3)串的块链存储表示
用链表来表示串,存储串的信息。在串的定长存储与堆分配存储中,串的一个个字符都是作为单个的单元或者整体连续的内存开始存储的。在串块链存储表示中由于链表的结构因素,使得每一个节点会由不同的字符所组成,节点中的字符数目也不一定相同。由于串的长度不一定是节点大小的整倍数,则链表的最后一个节点不一定全部都是字符,相对地,可以由‘#’符号进行补齐。以链表存储串值时,需要同时设置一个尾指针来指示链表中的最后一个节点。
在这里插入图片描述

发布了122 篇原创文章 · 获赞 221 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/jjsjsjjdj/article/details/103982874
今日推荐