• 1.串定义:略,可以记作:s="a1a2...an"

    2.空串
    不含任何字符的串称为空串,它的长度n=0,记为s=“”。 

    3.空白串
    含有一个或多个空格的串,称为空白串,它的长度是串中空格字符的个数,记为s= “?”。注意与空串的区别。

    4.子串、主串
    若一个串是另一个串中连续的一段,则这个串称为另一个串的子串,而另一个串相对于该串称为主串。例如,串s1=“abcdefg”,s2=“fabcdefghxyz”,则s1为s2的子串,s2相对于s1为主串。

    另外,空串是任意串的子串,任意串是自身的子串。通常称字符在序列中的序号为该字符在串中的位置,子串在主串的位置则以子串的第一个字符在主串中的位置来表示。

     

    5.串的基本操作都有哪些?

    1. 串复制 strcpy(S,T)

    表示将T串的值赋给S串。

    2. 联接 strcat(S,T)

    表示将S串和T串联接起来,使T串接入S串的后面。

    3. 求串长度 strlen (T)

    求T串的长度。

    4.子串 strsub(S,i,j, T)

    表示截取S串中从第i个字符开始连续j个字符,作为S的一个子串,存入T串。

    5.串比较大小 strcmp(S,T)

    比较S串和T串的大小,若S<T,函数值为负,若S=T,函数值为零,若S>T,函数值为正。

    6. 串插入 strins (S,i,T)
    在S串的第i个位置扦入T串。

    7. 串删除 strdel(S,i,j)

    删除串S中从第i个字符开始连续j个字符。

    8. 求子串位置 index(S,T)

    求T子串在S主串中首次出现的位置,若T串不是S串的子串,则位置为零。

    9. 串替换 replace (S,i,j,T)

    将S串中从第i个位置开始连续j个字符,用T串替换。

    利用上述九种基本运算还可以组合成字符串的其他有关操作.

    串的存储结构:

    串的顺序存储

    串的顺序存储结构,也称为顺序串,与第二章介绍的顺序表类似,就是用一组地址连续的存储单元依次存放串的各个字符。但由于串中元素全部为字符,故存放形式与顺序表有所区别。
    计算机的编址方式:
    字节编址(以字节为存取单位)
    编址(以字为存取单位)紧缩存储/非紧缩存储
    1.串的非紧缩存储
    一个存储单元中只存储一个字符,和顺序表中一个元素占用一个存储单元类似。具体形式见图4-1,设串S=“How do you do”。 
     
        2.串的紧缩存储
    根据各机器字的长度,尽可能将多个字符存放在一个字中。假设一个字可存储4个字符,则紧缩存储具体形式.

      从上面介绍的两种存储方式可知,紧缩存储能够节省大量存储单元,但对串的单个字符操作很不方便,需要花费较多时间分离同一个字中的字符,运算效率较低。而非紧缩存储的特点刚好相反,操作方便,但将占用较多的内存单元。
    两种方式的共同缺点是:插入或删除一个字符的相应算法效率较低(顺序结构的共同缺点。)
    3.串的字节存储

    h o w   d o   y o u   d o  

    串的链式存储 

    1结点大小为1的链式存储
    和前面介绍到的单链表一样,每个结点为一个字符,链表也可以带头结点。 
    S=“ABCDEFGHI”的存储结构具体形式见下图 

     

  • 相关阅读:
    vs2015解决fopen、fscanf 要求替换为fopen_s、fscanf_s的办法
    ThinkPHP5.1的公共函数
    Linux禁止ping
    2019.10.17 上科大虞晶怡教授
    Minimax极大极小算法、Alpha-Beta Pruning剪枝算法
    Apache24服务无法启动,发生服务特定错误1.
    LaTeX小白安装超详细步骤(WIndows系统)||相信我看这个安装就够啦!
    Java中Comparator比较器的使用
    当我看到别人二战想法,退缩的时候,我的感受
    2019.12.3 学英语的心得;学习学习
  • 原文地址:https://www.cnblogs.com/finger/p/2535276.html
Copyright © 2020-2023  润新知