diff --git a/README.md b/README.md index 9100816..d8cc550 100644 --- a/README.md +++ b/README.md @@ -129,8 +129,8 @@ $$ $$ \begin{aligned} T_3(n) -&=n^3+n^2log_2n \\ -&=O(n^3)+O(n^2log_2n) \\ +&=n^3+n^2log_2n\\ +&=O(n^3)+O(n^2log_2n)\\ &=O(n^3) \end{aligned} $$ @@ -219,3 +219,5 @@ $$ ## 3. [线性表](ch2/README.md) ## 4. [栈和队列](ch3/README.md) + +## 5. [串](ch4/README.md) diff --git a/ch3/README.md b/ch3/README.md index b7d1356..ca3c475 100644 --- a/ch3/README.md +++ b/ch3/README.md @@ -53,7 +53,7 @@ $$ $$ \frac{1}{5+1} C^{5}_{10} -=\frac{10*9*8*7*6}{6*5*4*3*2*1} +=\frac{10 \times 9 \times 8 \times 7 \times 6}{6 \times 5 \times 4 \times 3 \times 2 \times 1} =42 $$ diff --git a/ch3/matrix/README.md b/ch3/matrix/README.md index 7ba1686..5ba60fe 100644 --- a/ch3/matrix/README.md +++ b/ch3/matrix/README.md @@ -123,10 +123,10 @@ $$ $$ \left( \begin{matrix} -0 & 0 & 4 & 0 & 0 & 0 & 5 \\ -0 & 3 & 0 & 0 & 9 & 0 & 0 \\ -0 & 0 & 0 & 0 & 0 & 7 & 0 \\ -0 & 2 & 0 & 0 & 0 & 0 & 0 \\ +0 & 0 & 4 & 0 & 0 & 0 & 5\\ +0 & 3 & 0 & 0 & 9 & 0 & 0\\ +0 & 0 & 0 & 0 & 0 & 7 & 0\\ +0 & 2 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{matrix} \right) diff --git a/ch4/README.md b/ch4/README.md new file mode 100644 index 0000000..33414c3 --- /dev/null +++ b/ch4/README.md @@ -0,0 +1,77 @@ +# 串 + +## 1. 定义 + +串,即字符串(String)是由零个或者多个字符组成的有序序列。一般记为: + +$$ +S='a_{1}a_{2}...a_{n}'(n>0) +$$ + +- $S$ 为串名。单引号(或双引号)括起来的字符序列是串的值。 +- $a_{1}$ 可以是字母、数字或其他字符。 +- 串中字符的个数 $n$ 为串的长度。 +- $n=0$ 时的串称为空串(用 $\varnothing$ 表示)。 + +### 1.1. 相关概念 + +- 子串:串中人一个连续的字符组成的子序列。 +- 主串:包含子串的串。 +- 字符在主串中的位置:字符在串中的序号。 +- 子串在主串中的位置:子串的第一个字符在主串中的位置。 + +位置/位序从 1 开始,而不是从 0 开始。 + +### 1.2. 空串 V.S 空格串 + +```cpp +M="" +``` + +```cpp +N=" " +``` + +### 1.3. 串 V.S 线性表 + +串是一种特殊的线性表,数据元素之间呈线性关系。 + +串的数据对象限定为字符集,如:中文字符、英文字符、数字字符、标点字符等。 + +串的基本操作,如增删改查等通常以**子串**为操作对象。 + +## 2. 基本操作 + +- `StrAssign(&T, chars)`:赋值操作。把串 $T$ 赋值为 $chars$。 +- `StrCopy(&T, S)`:复制操作。由 $S$ 复制得到串 $T$。 +- `StrEmpty(S)`:判空操作。若 $S$ 为空串,则返回 `true`,否则返回 `false`。 +- `StrLength(S)`:求串长。返回串 $S$ 的元素个数。 +- `ClearString(&S)`:清空操作。将串 $S$ 清为空串。 +- `DestroyString(&S)`:销毁串。将串 $S$ 销毁(回收存储空间)。 +- `Concat(&T, S1, S2)`:串连接。用 $T$ 返回由 $S1$ 和 $S2$ 连接而成的新串。 +- `SubString(&Sub, S, pos, len)`:求子串。用 $Sub$ 返回串 $S$ 的第 $pos$ 个字符起长度为 $len$ 的字符串。 +- `Index(S, T)`:定位操作。若主串 $S$ 中存在与串 $T$ 值相同的子串,则返回它在主串 $S$ 中第一次出现的位置,否则返回函数值 0。 +- `StrCompare(S, T)`:比较操作。若 $S>T$,则返回值 $>0$;若 $S=T$,则返回值 $=0$;若 $S 采用不同的编码方式,每个字符所占空间空间不同,考验中只需要默认每个字符占 1B 即可。 + +### 2.3. 乱码问题 + +在你的文件中,原本采用某一套编码规则 $y=f(x)$。 + +打开文件时,你的软件以为你采用的是另一套编码规则 $y=g(x)$。 diff --git a/ch4/ascii.png b/ch4/ascii.png new file mode 100644 index 0000000..f9d2339 Binary files /dev/null and b/ch4/ascii.png differ