您当前的位置: 首页 >  111辄

串的基本知识及操作

111辄 发布时间:2020-03-08 11:21:58 ,浏览量:6

一、
串和线性表很相似,操作也基本相同
区别
①串的元素全为字符
② 线性表的操作基本是单个元素;串的基本操作是“串的整体”
ps:串加单引号 data=‘data’,第一个是标识符,第二个是串
若串仅仅作为输入输出的常量,则仅需要储存字符序列;大多数非数值计算中,串也以变量形式存在

二、串的储存
1.顺序映象
①定长顺序储存
用地址连续的内存单元依次存放字符序列
用数组

#define MAZSTRLEN 255
typedef unsigned char Sstring[MAXSTRLEN+1];

//0单元存放串的长度(某些高级语言中);C语言中串的长度是隐含的,用某个特定字符表示的

ps:当串的实际长度超过定义的最大长度,则超过部分被舍去,称为“截断” (所以注意连接contact时候分情况)

②堆分配储存
存储空间中只有串的起始地址和串长;
使用mallco()和free()函数动态管理,为新产生的串分配存储区,称这种串值共享的存储空间为“堆”;
C语言中常以一个空字符为结束标志,串长为隐含值

typedef struct{
	char *ch;
	int length;
}HString; 

2.块链储存
由于存储密度问题,一个结点最好存储不只一个字符,比如一个结点可以存一行;用链储存操作方便,可以直接删除一行,还不移动其他行的数据

#define CHUNKSIZE 80//可由客户定义的块大小
typedef struct Chunk{
	char ch[CUNKSIZE];//数据域 
    struct Chunk*next;//指针域 
}Chunk;//结点
typedef struct{
	Chunk *head,*tail; 
	int curlen;
}L_String;//串的链表结构 

三、C语言中串的基本操作(其它串操作都由基本操作构成)
1.gets(str)
2.puts(str)
3.stract(str1,str2)连接
4.strcpy(str1,str2)把串2赋值给串1
5.strcmp(str1,str2)比较
6.strlen(str)
7.strlwr(str)全部转换为小写字母
8.strupr(str)全部转换为大写字母

四、串的操作
1.StrAssign(&T,chars)
把串的常量(字符串)赋值给串的变量T
2.StrCopy(&T,S)
将串S赋值给串T
3.StrLength(S)
求串的长度(元素个数)
4.StrEmpty(S)
如果S是空串,返回TRUE;否则返回FALSE
5.StrCompare(S,T)
一位一位比较大小(如a>b),以第一次比较出来的结果为准 S>T,返回值>0;=、
0){ n=StrLength(S);,=StrLength(T); i=pos; while(i

关注
打赏
查看更多评论

111辄

暂无认证

  • 6浏览

    0关注

    57博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录