串在非数值处理事务处理等问题常涉及到一系列的字符操作计算机的硬件结构主要是反映数值计算的要求因此字符.pptx
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPTX 页数:31 大小:191KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

串在非数值处理事务处理等问题常涉及到一系列的字符操作计算机的硬件结构主要是反映数值计算的要求因此字符.pptx

串在非数值处理事务处理等问题常涉及到一系列的字符操作计算机的硬件结构主要是反映数值计算的要求因此字符.pptx

预览

免费试读已结束,剩余 21 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学4.1串类型(lèixíng)的定义注意:空串和空白串的不同,例如“”和“”分别表示长度(chángdù)为1的空白串和长度(chángdù)为0的空串。子串(substring):串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。子串的序号:将子串在主串中首次出现时的该子串的首字符对应在主串中的序号,称为子串在主串中的序号(或位置)。例如,设有串A和B分别是:A=“这是字符串”,B=“是”则B是A的子串,A为主串。B在A中出现了两次,其中首次出现所对应的主串位置是3。因此,称B在A中的序号为3。特别地,空串是任意串的子串,任意串是其自身的子串。串相等:如果两个串的串值相等(相同),称这两个串相等。换言之,只有当两个串的长度(chángdù)相等,且各个对应位置的字符都相同时才相等。通常在程序中使用的串有两种:串变量和串常量。串常量和整常数、实常数一样,在程序中只能被引用但不能不能改变其值,即只能读不能写。通常串常量是由直接量来表示的,例如语句错误(“溢出”)中“溢出”是直接量。串变量和其它类型的变量一样,其值是可以改变。4.1.2串的抽象数据类型定义(dìngyì)操作结果:将串t联结到串s后形成(xíngchéng)新串存放到s中。StrLength(t)初始条件:字符串t已存在。操作结果:返回串t中的元素个数,称为串长。SubString(s,pos,len,sub)初始条件:串s,已存在,1≦pos≦StrLength(s)且0≦len≦StrLength(s)–pos+1。操作结果:用sub返回串s的第pos个字符起长度为len的子串。……}ADTString4.2串的存储表示(biǎoshì)和实现4.2.1串的定长顺序存储表示(biǎoshì)1串的联结操作StatusStrConcat(StringTypes,StringTypet)/*将串t联结到串s之后,结果仍然(réngrán)保存在s中*/{inti,j;if((s.length+t.length)>MAX_STRLEN)ReturnERROR;/*联结后长度超出范围*/for(i=0;i<t.length;i++)s.str[s.length+i]=t.str[i];/*串t联结到串s之后*/s.length=s.length+t.length;/*修改联结后的串长度*/returnOK;}2求子串操作StatusSubString(StringTypes,intpos,intlen,StringType*sub){intk,j;if(pos<1||pos>s.length||len<0||len>(s.length-pos+1))returnERROR;/*参数非法*/sub->length=len-pos+1;/*求得子串长度*/for(j=0,k=pos;k<=leng;k++,j++)sub->str[j]=s.str[i];/*逐个字符(zìfú)复制求得子串*/returnOK;}4.2.2串的堆分配存储(cúnchǔ)表示1串的联结操作StatusHstring*StrConcat(HString*T,HString*s1,HString*s2)/*用T返回由s1和s2联结而成的串*/{intk,j,t_len;if(T.ch)free(T);/*释放旧空间*/t_len=s1->length+s2->length;if((p=(char*)malloc(sizeof((char)*t_len))==NULL){printf(“系统空间不够(bùgòu),申请空间失败!\n”);returnERROR;}for(j=0;j<s->length;j++)T->ch[j]=s1->ch[j];/*将串s复制到串T中*/for(k=s1->length,j=0;j<s2->length;k++,j++)T->ch[j]=s1->ch[j];/*将串s2复制到串T中*/free(s1->ch);free(s2->ch);returnOK;}4.2.3串的链式存储(cúnchǔ)表示串的块链式存储(cúnchǔ)的类型定义包括:⑴块结点的类型定义#defineBLOCK_SIZE4typedefstructBlstrtype{chardata[BLOCK_SIZE];structBlstrtype*next;}BNODE;(2)块链串的类型定义typedefstruct{BNODEhead;/*头指针*/intStrlen;/*当前长度*/}Blstring;在这种存储结构下,结点的分配总是以完