数据结构篇为本人考研时所写笔记,包括知识点和编程思想两大板块,笔记内容依据王道数据结构考研书所写,但比书本上知识更加生动形象,愿本篇章能对您有所帮助 四、 串(字符
数据结构篇为本人考研时所写笔记,包括知识点和编程思想两大板块,笔记内容依据王道数据结构考研书所写,但比书本上知识更加生动形象,愿本篇章能对您有所帮助
-
串是由零个或多个字符组成的有限序列
-
串常量在程序中只能引用但不能改变其值,串变量取值可以改变
-
空串用⊘表示
-
空串是任意串的子串;任意串是自身的子串
-
子串在主串中的位置以子串的第一个字符在子串中位置来表示
-
串的逻辑结构和线性表极为相似,区别仅在于串的数据对象限定为字符集
-
串的存储结构:
① 顺序存储:
(1) 截断:超过预定义长度的串会被舍去
(2) 对于串长的表示:一般将数组的data[0]舍弃不存从data[1]开始存储,并且设立独立的变量len来存放串长度;故串的下标从1开始计数
② 堆存储(动态数组):
(1) 用malloc()和free()函数来完成动态存储,malloc()产生的串存储在堆中,若分配成功返回一个指向起始地址的指针,若分配失败则返回NULL
③ 块链存储:
(1) 每个结点可存放一个或多个字符(每个结点称为块)
(2) 当存放多个数组时结点占不满可以用“#”或“\0”等补上
(3) 若结点中存储的数据低于为4B的指针域的指针,则说该存储密度低,故一般采用存储4B数据的方法
-
串的应用举例:建立词索引表和文件编辑
-
n为主串长,m为子串长,则串的朴素匹配最坏情况下需要比较字符的总次数为(n-m+1)*m