数据结构之串
一、串的概念
串:零个或多个任意字符串组成的有限序列
S="a1 a2 ... an"
S :串名 a1-an:串值 n是串长, n=0是空串
字串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串
“abcde”的子串有:
“”、“a”、“ab”、“abc”、...... 、“abcde”(包括自身)等等
真子串是指不包括自身的所有子串
主串:包含子串的串相应地称为主串
字符位置:字符在序列中序号为该字符在串中的位置
子串位置:子串第一个字符在主串中的位置
空格串:有一个或多个空格组成的串 (与空串不同)
串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相等时,这两个串才是相等的
(所有的空串是相当的)
二、串的类型定义
ADT String {
D = {ai | ai ∈ CharacterSet, i = 1,,2,...n, n>=0} (数据对象)
R1 = {<ai-1,ai> ai-1,ai∈D,i= 1,2,...,n} (数据关系,依次对应)
}
三、串的顺序存储结构
#define MAXLEN 255
typedef struct {
char ch[MAXLEN+1]; // 存储串的一维数值
int length // 串的长度
}
四、串的链式存储结构
优点:方便操作,确定:存储密度较低
但是可将多个字符存放在一个结点中,以克服其缺点
// 定义每一个结点块的大小
#define CHUNKSIZE 80
typedef struct Chunk {
char ch[CHUNKSIZE]
struct Chunk *next
}Chunk
// 定义串的整体结构
typedef struct{
Chunk *head,*tail // 串的头指针和尾指针
int curlen // 串的当前长度
}LString // 字符串的块链结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本