赞
踩
由0-n个字符组成的有限序列。(n>=0)
串中任意个连续字符组成的子序列成为该串的子串。
包含子串的串成为主串。
字符在序列中的序号为该字符在串中的位置。
子串第一个字符在主串中的位置。
一个或多个空格组成的串。和空串不同。
两个字符串的长度相等且每一位上的字符都相等。
不存任何字符的序列。所有空串相等。
- #define SqStrSize 10
-
- //顺序串
- typedef struct SqStr
- {
- char StrArray[SqStrSize];
- int SqStrLen;
- }SqStr;
- //链串
- typedef struct LinkStrNode
- {
- char c;
- struct LinkStrNode* NextPtr;
- }LinkStrNode,*LinkStrNodePtr;
-
- typedef struct LinkStr
- {
- LinkStrNodePtr HeadPtr;
- LinkStrNodePtr TailPtr;
- int LinkStrLen;
- }LinkStr;
- #define ChunkSize 10
-
- //块链
- typedef struct ChunkNode
- {
- char StrArray[ChunkSize];
- struct ChunkNode* NextPtr;
- }ChunkNode,*ChunkNodePtr;
-
- typedef struct ChunkLink
- {
- ChunkNodePtr HeadPtr;
- ChunkNodePtr TailPtr;
- int ChunkLinkLen;
- }ChunkLink;
存储密度公式:存储密度 = 串值所占的存储 ➗ 实际分配的存储。
例如存储100个字符:
(1)顺序串存储密度=100除以(100+4)≈ 0.96(int类型4个字节)
(2)链串存储密度 = 100除以((1+4)*100)= 0.2(一个节点有一个指针域,一个指针占4个字节)
(3)块链存储密度 = 100除以((10+4)*10)≈ 0.71(一个节点有一个指针域,一个指针占4个字节,假设一个数据域存储十个字符,一共10个节点可以存100个字符)
字符串匹配算法可以参考之前写的文章《leecode-C语言实现-28. 找出字符串中第一个匹配项的下标》,里面有BF算法介绍和KMP算法具体实现以及个人理解。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。