一、什么是串的块链存储串String是由零个或多个字符组成的有限序列。串的存储方式通常有顺序存储链式存储其中块链存储是一种改进的链式存储结构。二、块链存储的基本思想普通链表通常一个结点存放一个字符例如a → b → c → d这种方式存在明显问题指针数量过多空间利用率低访问效率较差因此提出一个结点存放多个字符即“块链存储”。例如[abc] → [def] → [gh]其中每个方块称为“块Chunk”一个块中可存放多个字符块之间通过指针连接三、块链结点结构设每块大小为 3则结点结构可表示为typedef struct Chunk {char ch[3];struct Chunk *next;} Chunk;其中ch[3] 用于存放字符next 指向下一块四、块链存储的特点1. 减少指针数量普通链表a → b → c → d → e每个字符都需要一个指针。块链[abc] → [de]多个字符共享一个指针。因此空间利用率更高存储效率更高2. 不要求连续存储空间顺序串必须占用连续内存。块链串各块可分散存储扩展更方便因此更适合长字符串动态字符串文件系统外存结构五、块链串的插入操作1. 基本思想插入时在目标块中腾出位置若块满则向后续块转移字符必要时增加新块2. 示例原串[abc] → [def] → [gh]在 c 后插入 X。若块长固定为 3则[abc]变成[abcX]超过容量。于是需要[abc] → [Xde] → [fgh]3. 插入特点将移动限制在局部块之间相比顺序串不一定移动整个串不需要连续大规模搬移块之间借字符因此更灵活。六、块链串的删除操作1. 基本思想删除字符后后续字符前移必要时从后继块借字符2. 示例原串[abc] → [def] → [gh]删除 b逻辑上会变为[acd] → [efg] → [h]因此3. 删除特点避免连续大规模整体移动它更多是分块调整局部移动七、块链与顺序存储的比较比较项目顺序存储块链存储存储空间连续分散插入删除大范围移动局部调整随机访问快较慢扩展能力较差较强指针数量无较少八、块链存储的进一步思考教材中通常采用固定块长例如[abc] → [def]每块长度固定为 3。这样做的原因是实现简单结构统一便于分析但实际上块长也可以动态变化例如[abce] → [def] → [gh]这样插入时甚至无需移动后续元素插入效率更高这种思想在现代高级数据结构中十分常见例如RopeGap BufferPiece TableB树字符串结构九、块链存储的本质块链存储本质上是“数组 链表”的结合其中块内部类似数组块之间类似链表因此块内部具有顺序访问局部移动特点。块之间具有动态扩展非连续存储特点。十、总结串的块链存储是一种用“多个字符组成一个结点”的链式字符串存储结构。它的核心思想是通过“分块”减少指针数量并降低插入、删除时的大规模移动代价。虽然块链存储在插入、删除时仍会发生字符移动但它不需要连续整体搬移更适合动态扩展更适合长串管理因此在许多实际系统中具有重要意义。
串的块链存储表示及其插入、删除操作
一、什么是串的块链存储串String是由零个或多个字符组成的有限序列。串的存储方式通常有顺序存储链式存储其中块链存储是一种改进的链式存储结构。二、块链存储的基本思想普通链表通常一个结点存放一个字符例如a → b → c → d这种方式存在明显问题指针数量过多空间利用率低访问效率较差因此提出一个结点存放多个字符即“块链存储”。例如[abc] → [def] → [gh]其中每个方块称为“块Chunk”一个块中可存放多个字符块之间通过指针连接三、块链结点结构设每块大小为 3则结点结构可表示为typedef struct Chunk {char ch[3];struct Chunk *next;} Chunk;其中ch[3] 用于存放字符next 指向下一块四、块链存储的特点1. 减少指针数量普通链表a → b → c → d → e每个字符都需要一个指针。块链[abc] → [de]多个字符共享一个指针。因此空间利用率更高存储效率更高2. 不要求连续存储空间顺序串必须占用连续内存。块链串各块可分散存储扩展更方便因此更适合长字符串动态字符串文件系统外存结构五、块链串的插入操作1. 基本思想插入时在目标块中腾出位置若块满则向后续块转移字符必要时增加新块2. 示例原串[abc] → [def] → [gh]在 c 后插入 X。若块长固定为 3则[abc]变成[abcX]超过容量。于是需要[abc] → [Xde] → [fgh]3. 插入特点将移动限制在局部块之间相比顺序串不一定移动整个串不需要连续大规模搬移块之间借字符因此更灵活。六、块链串的删除操作1. 基本思想删除字符后后续字符前移必要时从后继块借字符2. 示例原串[abc] → [def] → [gh]删除 b逻辑上会变为[acd] → [efg] → [h]因此3. 删除特点避免连续大规模整体移动它更多是分块调整局部移动七、块链与顺序存储的比较比较项目顺序存储块链存储存储空间连续分散插入删除大范围移动局部调整随机访问快较慢扩展能力较差较强指针数量无较少八、块链存储的进一步思考教材中通常采用固定块长例如[abc] → [def]每块长度固定为 3。这样做的原因是实现简单结构统一便于分析但实际上块长也可以动态变化例如[abce] → [def] → [gh]这样插入时甚至无需移动后续元素插入效率更高这种思想在现代高级数据结构中十分常见例如RopeGap BufferPiece TableB树字符串结构九、块链存储的本质块链存储本质上是“数组 链表”的结合其中块内部类似数组块之间类似链表因此块内部具有顺序访问局部移动特点。块之间具有动态扩展非连续存储特点。十、总结串的块链存储是一种用“多个字符组成一个结点”的链式字符串存储结构。它的核心思想是通过“分块”减少指针数量并降低插入、删除时的大规模移动代价。虽然块链存储在插入、删除时仍会发生字符移动但它不需要连续整体搬移更适合动态扩展更适合长串管理因此在许多实际系统中具有重要意义。