串
文章目录
- 考研中默认每个字符占用 1B (一个字节)= 8 bit
- 一个汉字占用 2B = 16 bit
串的存储结构
1. 定长顺序存储表示
#define MAXLEN 255
typedef struct{
char ch[MAXLEN];
int length; // 注意 ch[0] 不存储任何字符,所以计算长度需注意!!
}SString;
- ch 数组下标 0 不存储字符,从 ch[1] 开始存储字符,使用 length 存储串的长度,而不是在 ch[0] 中存储,因为其只能存储 0~255 长度。
2. 堆分配存储表示
typedef struct{
char *ch;
int length;
}HString;
HString str = (char *)malloc(sizeof(char) * initsize);
free(str);
使用 malloc 在堆上申请空间,使用结束可以用 free 销毁
3. 块链存储表示
typedef struct StringNode {
char ch[4];
struct StringNode *next;
}StringNode, *String;
- StringNode 表示结点,String 强调字符串的起始地址。
- 在结构体中使用 ch[4] 是为了增加存储密度,因为一个指针的大小为 4B,若一个结点只存储一个字符,则密度过低了。
串的基本操作
赋值: StrAssign(&T, chars)
复制:StrCopy(&T, S)
判空:StrEmpty(S)
比较:StrCompare(S, T)
int StrCompare(SString