串的存储方式
顺序串(栈/堆)
2 种结构体的顺序串存储方式
定长顺序存储串(末尾没有
\0
)(栈)1
2
3
4
5
6
7
typedef struct
{
char ch[MAXLEN];
int len;
} SString;堆分配存储串(末尾有
\0
)(堆)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 2. 变长顺序串(堆分配数组)
typedef struct
{
char *ch;
int len;
} HString;
// 创
HString *newHString(int size)
{
HString *s = (HString *)malloc(sizeof(HString));
s->ch = (char *)malloc(sizeof(char) * size);
s->len = 0;
return s;
}
// 销
void freeHString(HString **s) {
free((*s)->ch);// 销毁在堆申请的串
free((*s)); // 销毁串结构体
(*s) = NULL; // 销毁悬浮指针
}
2 种纯数组的顺序串存储方式(生产不常见)
缺点: 只能存 255 个字符.
首元素存储长度, 末尾没有
\0
.1
2
3// 伪代码
char s = {MAXSIZE, 1, 2, 3, 4, ...};直接存储. 末尾有
\0
.1
2
3// 伪代码
char s = {1, 2, 3, 4, ...};
串操作(栈/堆串)
1 |
|
块链存储串(堆)
1 |
|