【软考】9.2 串/数组/矩阵/广义表/树

《字符串》

  • 一种特殊的线性表,数据元素都为字符
  • 模式匹配:寻找子串第一次在主串出现的位置
  • 模式匹配算法

1. 暴力破解法(布鲁特-福斯算法)

  • 主串与子串一个个匹配

  • 效率低

    2. KMP算法

  • 主串后缀和子串前缀能否找到一样的元素,能就把子串移上去,不用再对比,从主串当前中断的位置开始对比

  • abaac:P1P2P3P4P5

    1. j=1 ------> next1=0
    1. j=2 ,1<k<2,其他情况 ------> next2=1
    1. j=3 ,1<k<3:k=2,'P(2-1)'='P(3-1)' ------> 'P1'='P2'------> a=b,其他情况 ------> next3=1
    1. j=4 ,1<k<4:
      k=2,'P(2-1)'='P(4-2+1)' ------> 'P1'='P3'------> a=a ------>next4=2 ;
      k=3,'P1P(3-1)'='P(4-3+1)P(4-1)' ------> 'P1P2'='P2P3'------> ab=ba ,其他情况;
    1. j=5next5=2
  • 即 next = 01122

《数组》

  • 适用于采用顺序结构
  • 数组存储地址的计算

《矩阵》

  • 直接带算式
  • a1,1------> B1 ------> i=1,j=1,k=1;
  • A0,0------>B1;A0,1------>B2

《广义表》

  • 长度:最外层包含的元素个数
  • 深度:单边括号的个数;原子的深度为0,空表深度为1

《树与二叉树》

  • 线性表的每个节点只有一个入度和一个出度
  • 树的每个节点只有一个入度,多个出度
  • 度:一个结点的子树个数
  • 叶子结点:度为0的结点
  • 树的高度(深度):一棵树的最大层数
  • 二叉树
  • 二叉树:每一个结点的度 ≤2
  • 满二叉树:除了最后一层的叶子结点外,每一个结点的度都是2
  • 一共有k层,第 k-1 层是满的,第 k 层:
  • (完全二叉树)从左到右是不间断的(如左4右5,左6)
  • (非完全二叉树)从左到右是可间断的(如左4右5,右6)
  • 二叉树的性质
  • 二叉树第 i 层 至多有 2^(i -1) 个节点
  • 深度为k的二叉树(满二叉树)至多有 (2^k) -1 个节点
  • 终端节点数为n0,度为2的节点数为n2,则 n0 = n2 +1
相关推荐
Lyyaoo.25 分钟前
【矩阵】【中等】螺旋矩阵
线性代数·矩阵
李可以量化31 分钟前
Redis Client 从入门到精通(一)下:redis-py 核心数据结构操作与连接管理
数据结构·redis·python·bootstrap·量化交易·qmt
疯狂打码的少年36 分钟前
【数据结构】复习日:树 + 图 + 排序(整理对比表)
数据结构·笔记·算法
星星.7221 小时前
2026河南萌新联赛第六场(郑州大学)补题B、D、L、J、I
数据结构·c++·算法
心仪久了会沦陷1 小时前
数据结构入门系列——顺序表详解:概念、分类与动态实现
c语言·数据结构·经验分享·笔记·开源
smj2302_796826521 小时前
解决leetcode第4033题有效K个不同元素子数组I
数据结构·python·算法·leetcode
旖旎夜光2 小时前
LCR 173:在点名(二分查找) —— 题解
数据结构·c++·算法·leetcode·二分查找
重生之后端学习2 小时前
438. 找到字符串中所有字母异位词[中等]✅
开发语言·数据结构·算法·leetcode·职场和发展
LuminousCPP14 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
16 小时前
数据结构第一课:复杂度解析
数据结构