数据结构(超详细讲解!!)第十九节 块链串及串的应用

1.定义

由于串也是一种线性表,因此也可以采用链式存储。由于串的特殊性(每个元素只有一个字符),在具体实现时,每个结点既可以存放一个字符,也可以存放多个字符。每个结点称为块,整个链表称为块链结构,为了便于操作,再增加一个尾指针。块链结构可定义如下:

复制代码
#define  BLOCK --SIZE  <每个结点存放的字符个数>
typedef struct Block{
   char               ch[BLOCK#--SIZE]; 
   struct Block   *next;
} Block;
typedef struct { 
Block   *head; 
Block   *tail; 
int     length;
} BLString; 

2.串的应用:文本编辑

文本编辑程序用于源程序的输入和修改,公文书信、报刊和书籍的编辑排版等。常用的文本编辑程序有Edit、WPS、 Word等。文本编辑的实质是修改字符数据的形式和格式, 虽然各个文本编辑程序的功能不同,但基本操作是一样的, 都包括串的查找、插入和删除等。 为了编辑方便,可以用分页符和换行符将文本分为若干页,每页有若干行。我们把文本当作一个字符串,称为文本串,页是文本串的子串,行是页的子串。

我们采用堆存储结构来存储文本,同时设立页指针、行指针和字符指针,分别指向当前操作的页、行和字符,同时建立页表和行表存储每一页、每一行的起始位置和长度。

例:

假设有如下PASCAL源程序:

复制代码
FUNC max(x, y: integer): integer;
VAR z: integer;
BEGIN
   IF x>y THEN z: =x; 
   ELSE z: =y; 
   RETURN(z);
END; 
相关推荐
闪电悠米3 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记4 小时前
堆(数据结构)
数据结构·
wabs6668 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论
yuannl109 小时前
图的最短路径Dijkstra
数据结构
zander25810 小时前
138. 随机链表的复制
数据结构·算法·链表
过期动态11 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
来一碗刘肉面11 小时前
栈在递归中的应用
数据结构·算法
皓月斯语11 小时前
程序设计语言的特点
开发语言·数据结构·c++
邪修king12 小时前
C++ 进阶终章:异常机制与智能指针全解 —— 从错误处理到 RAII 资源管理,打通现代 C++ 的核心命脉
android·数据结构·c++
Adios79419 小时前
设置交集大小至少为2
数据结构·算法·leetcode