知识大全 串 - 串的存储结构 - 串的顺序存储
Posted 字符
篇首语:青春须早为,岂能长少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 串 - 串的存储结构 - 串的顺序存储相关的知识,希望对你有一定的参考价值。
因为串是特殊的线性表 故其存储结构与线性表的存储结构类似 只不过由于组成串的结点是单个字符 所以存储时有一些特殊的技巧
串的顺序存储
顺序串
串的顺序存储结构简称为顺序串
与顺序表类似 顺序串是用一组地址连续的存储单元来存储串中的字符序列 因此可用高级语言的字符数组来实现 按其存储分
配的不同可将顺序串分为如下两类
( )静态存储分配的顺序串
( )动态存储分配的顺序串
静态存储分配的顺序串
( )直接使用定长的字符数组来定义
该种方法顺序串的具体描述
#define MaxStrSize //该值依赖于应用 由用户定义
typedef char SeqString[MaxStrSize]; //SeqString是顺序串类型
SeqString S; //S是一个可容纳 个字符的顺序串
注意
①串值空间的大小在编译时刻就已确定 是静态的 难以适应插入 链接等操作
②直接使用定长的字符数组存放串内容外 一般可使用一个不会出现在串中的特殊字符放在串值的末尾来表示串的结束 所以串空间
最大值为MaxStrSize时 最多只能放MaxStrSize 个字符
【例】C语言中以字符 \\ 表示串值的终结
>
( )类似顺序表的定义
直接使用定长的字符数组存放串内容外 可用一个整数来表示串的长度 此时顺序串的类型定义完全和顺序表类似
typedef struct
char ch[MaxStrSize]; //可容纳 个字符 并依次存储在ch[ n]中
int length;
SeqString;
注意
①串的长度减 的位置就是串值的最后一个字符的位置
②这种表示的优点是涉及串长的操作速度快
动态存储分配的顺序串
顺序串的字符数组空间可使用C语言的malloc和free等动态存储管理函数 来根据实际需要动态地分配和释放
这样定义的顺序串类型亦有两种形式
( )较简单的定义
typedef char *string; //C中的串库
( )复杂定义
typedef struct
char *ch;// 若串非空 则按实际的串长分配存储区 否则ch为NULL
int length;
HString;
串的顺序存储操作
cha138/Article/program/sjjg/201311/23914相关参考
串的顺序存储 串的顺序存储结构简称顺序串顺序串是用一组地址连续的存储单元依次存储串中的字符序列 静态存储分配的顺序串 顺序串最简单的描述形式是直接使用定长的字符数组来定义数组的上界预先
顺序串上的子串定位运算 ()朴素的串匹配算法的基本思想 即用一个循环来依次检查nm+个合法的位移i(≤i≤nm)是否为有效位移 具体过程【参见动画演示】 ()顺序串上的串匹配算法 以下以
子串定位运算 串是特殊的线性表故顺序串和链串上实现的运算分别与顺序表和单链表上进行的操作类似 C语言的串库里提供了丰富的串函数来实现各种基本运算因此我们对各种串运算的实现不作讨论利用串函数实现
串的链式存储 链串 > 用单链表方式存储串值串的这种链式存储结构简称为链串 链串的结构类型定义 typedefstructnode chardata; structnode*next
串的链式存储cha138/Article/program/sjjg/201311/23382
串的链式存储链串 用单链表方式存储串值串的这种链式存储结构简称为链串 链串的结构类型定义 typedefst
顺序串又可按存储分配的不同分为 ·静态存储分配直接用定长的字符数组来定义优点是涉及串长的操作速度快但不适合插入链接操作 ·动态存储分配是在定义串时不分配存储空间需要使用时按所需串的长度分配存储
.任意个连续的字符组成的子序列 . O(m+n) . . .()模式匹配 ()模式串 .()其数据元素都是字符()顺序存储()和链式存储()串的长度相等且两串中对
.设T和P是两个给定的串在T中寻找等于P的子串的过程称为__()__又称P为__()__【西安电子科技大学二(/分)】 .串是一种特殊的线性表其特殊性表现在__()__串的两种最基本的存储方式是
串的基本运算cha138/Article/program/sjjg/201311/23402