数据结构之串

一、串的概念

:零个或多个任意字符串组成的有限序列           

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= 12,...,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                  // 字符串的块链结构

 

posted @   铜须的编程生活  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示