数据结构——串

  • 考研中默认每个字符占用 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 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值