您当前的位置: 首页 >  数据结构
  • 1浏览

    0关注

    880博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【大话数据结构C语言】18 串是什么?

CodeAllen嵌入式编程 发布时间:2020-11-16 23:41:03 ,浏览量:1

系列文章参考资料为《大话数据结构》,源码为个人私有,未经允许不得转载 技术交流群或资料添加微信号:CoderAllen,回复关键字即可

串是什么?

串(string)是由零个或多个字符组成的有限序列,又名叫字符串

空格串:是只包含空格的串,注意他与空串的区别,空格串是有内容有长度的,二期可以不止一个空格 子串和主串:串中任意个数的连续字符组成的子序列称为该串的子串,相应的,包含子串的串称为主串

串的比较:

串的比较是通过组成串的字符之间的编码来进行的,而字符的编码指的是字符在对应字符集中的序号

计算机中常用的字符是使用标准的ASCII编码,是由7位二进制数表示的一个字符,总共可以表示128个字符

后来由于一些特殊符号的出现,128个是不够用的,扩展ASCII码由8位二进制数表示一个字符,总和可以表示256个字符,基本可以满足英语为主的语言和特殊字符需要

不过对于全世界估计要成百上千种语言,256个字符肯定是不够的,于是有了Unicode编码,常用16位的二进制表示一个字符,总共可以表示216个字符,约65万多字符,足够表示世界上所有语言的所有字符,为了兼容,其前256个字符与ASCII相同

所以我们比较串,必须他们串的长度和他们对应位置的字符都相等时,才算是相等

串的抽象数据类型:

串的逻辑结构和线性表很相似,不同的地方在于串针对的是字符集,也就是串中的元素都是字符

因此对于串的基本操作和线性表是很大差别的,线性表更关注单个元素的操作,比如查找一个元素,插入或者删除一个元素,但是串中国更多的是查找子串位置,得到指定位置子串,替换子串等操作 在这里插入图片描述

看一个操作index的实现算法:

使用了strlength,substring,strcompare等基本操作实现

/*  T为非空串。若主串S中第pos个字符之后存在与T相等的子串, */
/*  则返回第一个这样的子串在S中的位置,否则返回0 */
int Index(String S, String T, int pos) 
{
    int n,m,i;
    String sub;
    if (pos > 0) 
    {
        n = StrLength(S);   /* 得到主串S的长度 */
        m = StrLength(T);   /* 得到子串T的长度 */
        i = pos;
        while (i             
关注
打赏
1665938897
查看更多评论
0.0409s