数据结构—字符串

一、字符串的定义

  1. 字符串是一种最常用的非数值类型。
  2. 字符串是由零个或多个字符组成的有限序列,字符串的逻辑结构与线性表相似,只是数据对象约束为字符集合,字符串的操作中数据元素操作不像线性表那样单个元素操作,而是通常作为一个整体进行操作。

二、串的表现和实现

  1. 概念

    1. 串的常用定长顺序存储、堆分配存储和块链存储三种方法实现。
    2. 串相等:如果两个串的串值相等(相同),称这两个串相等。换言之,只有当两个串的长度相等,且各个对应位置的字符都相同时才相等。
  2. 定长顺序存储表示

    1. 与线性表的顺序存储结构相同,用一组连续的固定长度地址空间进行存储。超过定义范围的字符串将被

      截断舍弃。

    2. 这个空间里面保存的字符串是什么,其方法是在C语言中用一个结束符号 ’\0‘ 进行标记,在定长顺序存储方法中字符串的长度保存在数组第一个位置、0位置。

三、堆分配存储表示

使用堆存储数据的方式已经学过很多了,线性表在堆中分配空间时分配比较大的一块空间,之后有一个表示线性表内元素个数的变量控制线性表的操作。字符串的堆分配存储方式是按照字符串长度分配堆空间,不会额外多分配空间,如果字符串为空,堆中不分配空间。

四、块链存储形式

  1. 像线性表一样如果每个字符都以一个节点形式存储,这是比较浪费空间,见下图。因为字符串操作通常不以单个元素为单位进行,而通常对多个元素进行操作。
  2. 可以设计一个大块Chunk节点,在Chunk节点中存储多个字符,并将Chunk块用链表方式链接,如果最后一个大块不能完全填充存储则约定某个符号为空字符,如 ‘#’,这种存储方式成为块链存储表示。

五、字符串匹配算法

  1. 概念

    给定一个字符串从这个字符串中查找某个字符串是否为该串的子串的操作称为串的模式匹配算法。

  2. 朴素算法

  3. KMP 算法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iGma_e

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值