9、串(顺序串)

1.串的基本概念

串:由零个或多个字符组成的有限序列。
子串:一个串中任意个连续字符组成的序列。

如串 “abcde”,的子串有 “a”、“b”、“ab”、“abc”、“abcde” 等。
串和线性表一样,也有顺序存储结构(顺序串)和链式存储结构(链串)。

2.顺序串

顺序串存储方式有:非紧缩格式,紧缩格式。
一个字节可以表示一个字符。由于计算机内存是按字编址的,即以字为存储单位,一个存储单元指的是一个字。而一个字可能包含多个字节,不同的计算机系统的字长是不同的,常见的有8位、16位、32位、64位等,字长越长,计算机一次处理的信息位就越多,精度就越高,字长是计算机性能的一个重要指标。
一个32位的CPU字长是4个字节。下图是32位的CPU的机器顺序串的存储方式。
在这里插入图片描述
串的紧缩格式节省空间,但处理单个字符不方便,运行效率低,因为要花费时间从同一个字中分离出字符;非紧缩格式则相反。因此对串的操作主要采用非紧缩格式。对于非紧缩格式的顺序串类型声明格式如下

typedef struct
{
   
	char data[MaxSize];	//存放串字符
	int length;			//存放串长
}SqString;

串的实现

#include<stdlib.h>
#include<stdio.h>
//定义串的类型
#define MaxSize 50
typedef struct
{
   
	char data[MaxSize];	//存放串字符
	int length;			//存放串长
}SqString;
//生成串
void StrAssign(SqString  &s, char cstr[])	//s为引用型参数
{
   
	int i;
	for (i = 0; cstr[i] != '\0'; i++)
		s.data[i] = cstr[i];
	s.length = i;							//设置串s长度
}
//输出串的值
void DispStr(SqString s)
{
   
	int i;
	if (s.length > 0)
	{
   
		for (i = 0; i < s.length; i++)
			printf("%c", s.data[i]);
		
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值