西维蜀黍

【Data Structure】广义表(Generalised List)

数组既可以存储不可再分的数据元素(如数字 5、字符 ‘a’),也可以继续存储数组(即 n 维数组)。

  ...


【Data Structure】矩阵

矩阵

数据结构中,提供针对某些特殊矩阵的压缩存储结构。

这里所说的特殊矩阵,主要分为以下两类:

  • 含有大量相同数据元素的矩阵,比如对称矩阵
  • 含有大量 0 元素的矩阵,比如稀疏矩阵、上(下)三角矩阵

针对以上两类矩阵,数据结构的压缩存储思想是:矩阵中的相同数据元素(包括元素 0)只存储一个

  ...


【Data Structure】树(Trees)

树(Tree)

上图(A) 是使用树结构存储的集合 {A,B,C,D,E,F,G,H,I,J,K,L,M} 的示意图。对于数据 A 来说,和数据 B、C、D 有关系;对于数据 B 来说,和 E、F 有关系。这就是“一对多”的关系。

  ...


【Algorithm】字符串匹配算法 - 朴素的字符串匹配算法(Naive String Matching Algorithm)

模式匹配/ 字符串匹配算法

字符串匹配

字符串匹配问题的形式定义:

  • **文本(Text)**是一个长度为 n 的数组 T[1..n];
  • **模式(Pattern)**是一个长度为 m 且 m≤n 的数组 P[1..m];
  • T 和 P 中的元素都属于有限的字母表 Σ 表
  • 如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T 中出现且位移为 s,且称 s 是一个有效位移(Valid Shift)
  ...


【Algorithm】字符串匹配算法 - KMP 算法

模式匹配/ 字符串匹配算法

字符串匹配

字符串匹配问题的形式定义:

  • **文本(Text)**是一个长度为 n 的数组 T[1..n],在下文中,将其对应的字符串称之为"源字符串";
  • **模式(Pattern)**是一个长度为 m 且 m≤n 的数组 P[1..m],在下文中,将其对应的字符串称之为"模式字符串";
  • T 和 P 中的元素都属于有限的字母表 Σ 表
  • 如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T 中出现且位移为 s,且称 s 是一个有效位移(Valid Shift)
  ...