跳到主要内容

串的存储结构演示

串的存储主要有两种方式:

  1. 顺序存储:类似于数组,紧凑但需要预分配空间。
  2. 链式存储:为了提高存储密度,通常一个结点存储多个字符(块链)。
Step 1/4初始化空串:申请固定大小数组 (MAXSIZE),长度为 0。
1// 定长顺序存储
2#define MAXSIZE 255
3typedef struct {
4 char ch[MAXSIZE]; // 静态数组
5 int length; // 当前长度
6} SString;
struct SString
0
1
2
3
4
5
6
7
8
9
...
int length =
0
⚠️ 定长数组:无论存多少字符,都占用 MAXSIZE 空间

1. 定长顺序串(静态数组,长度写死)

#define MAXSIZE 255          // 最大容量
typedef struct {
char ch[MAXSIZE]; // 连续空间
int length; // 当前实际长度
} SString;

2. 堆分配顺序串(动态数组,运行时可扩容)

typedef struct {
char *ch; // malloc/realloc 得到的连续空间
int length; // 已用长度
int cap; // 已分配容量
} HString;

3. 存储方式对比

方案实现方式优点
方案一ch[0] 充当 Length节省空间
方案二数组下标与字符位序相同访问直观
方案三'\0' 表示结尾(无 Length 变量)符合 C 语言字符串规范
方案四单独维护 Length 变量长度获取高效

Img

💬 留下你的问题或见解