串类型的定义(精)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2 串的表现和实现
4.2.1定长顺序存储表示
定长顺序存储表示,也称为静态存储分配的顺序表。它是 用一组连续的存储单元来存放串中的字符序列。所谓定长顺 序存储结构,是直接使用定长的字符数组来定义,数组的上 界预先给出: #define MAXSTRLEN 255 typedef char Sstring[MAXSTRLEN+1]; 串长度的表示方法: 方法1:用下标为0的元素存储串长度。 方法2:使用一个不会出现在串中的特殊字符在串值的尾 部来表示串的结束。例如,C语言中以字符‵\0′表示串值 的终结。
串的块链存储表示如下 #define CHUNKSIZE 80 typedef struct Chunk{ char ch[CHUNKSIZE]; struct Chunk *next; }Chunk; Typedef struct { Chunk *head,*tail;//串的头和尾指针 int curlen;//串的当前长度 }
第四章 串
4.1 串类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 堆分配存储表示 4.2.3 串的块链存储表示
4.1
一、串和基本概念
串类型的定义
串(String)是零个或多个字符组成的有限序列。一般 记作S=„a1a2a3…an‟,其中S 是串名,双引号括起来的字符 序列是串值;ai(1≦i≦n)可以是字母、数字或其它字符; 串中所包含的字符个数称为该串的长度。长度为零的串称 为空串,它不包含任何字符。 通常将仅由一个或多个空格组成的串称为空白串。 注意:空串和空白串不同,例如‘ ’和‘’分别表示长 度为1的空白串和长度为0的空串。
二、串的抽象数据定义
Leabharlann Baidu
ADT String{ 数据对象:D={a|a∈CharacterSet,i=1,2, …,n,n≥0} 数据关系:R1={<ai-1,ai>| ai-1,ai ∈D} 基本操作: StrCopy(&T,S) 初始条件:chars是字符串常量 操作结果:生成一个其值为chars的串T StrCompare(S,T) 初始条件:串S,T存在 操作结果:若S>T,则返回值>0;若S=T,则返回值=0,若 S<T,则返回值<0 StrLength(S) 初始条件:串S存在 操作结果:返回S的元素的个数
head
s
t
r
i
n
g^
head
s
t
r
i
n
g
# # ^
串值所占存储位 存储密度= ————————— 实际分配的存储位
Concat(&T,S1,S2) 初始条件:串S1,S2存在 操作结果:用T返回由S1和S2联接而成的新串 SubString(&Sub,s,pos,len) 初始条件:串S存在,1≤ pos ≤StrLength(S) ,且0≤ len≤StrLength(S)-pos+1 操作结果:用sub返回串S的第pos个字符起长度为len的字串 Index(S,T,pos) 初始条件:串S和T存在,T是非空串, 1≤pos≤StrLength(S) 操作结果:若主串S中存在和串T值相同的字串,则返回它在主 串S中第pos个字符之后第一次出现的位置;否则函数值为0. …… }
4.2.3 串的块链存储结构
链式存储结构类似线性链表,但需要考虑每个结点是 存放一个字符还是多个字符。一个字符的,插入、删除、 求长度非常方便,但存储效率低。多个字符的,改善了效 率,在处理大字符串时很有效,可用特殊符号来填满未充 分利用的结点,但插入、删除不方便。 附设了头尾指针,并给出了当前串的长度的串的链式存 储结构称为块链存储结构。
子串:串中任意个连续字符组成的子序列 主串:包含子串的串 子串在主串中的序号(或位置):子串在主串中首次 出现时的该子串的首字符对应的主串中的序号 例:设 A=“This is a string” B=“is” 则B是A的子串,A为主串,B在A中的序号(或位置)为3 特别地,空串是任意串的子串,任意串是其自身的子 串。
4.2.2堆分配存储表示
这种存储表示的特点是,仍以一组地址连续的存储单元 存放串值字符序列,但它们的存储空间是在程序执行过程中 动态分配而得。所以也称为动态存储分配的顺序表。在C语 言中利用函数malloc()、free()来根据实际需要动态分配和 释放字符数组空间。这样定义的顺序串类型也有两种形式。 1、typedef char * string; //c中的串相当于此类型定义 2、typedef struct { char *ch; int length; }hstring;
相关文档
最新文档