数据结构:串.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构:串

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

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档