欢迎来到天天文库
浏览记录
ID:51437468
大小:79.96 KB
页数:7页
时间:2020-03-24
《数据结构串的基本操作.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、西北师范大学计算机科学与工程学院学生实验报告学号201371020217专业计算机科学与技术班级软件一班姓名王尚课程名称数据结构课程类型专业课实验名称串的基本操作实验目的:(1)掌握串的基本操作,即生成一个字符串、联接成一个新串、串的清除等一系列操作。(2)掌握串的基本意义,学会基本的编程。实验要求及内容:实验要求:通过学习串这一小节,掌握其基本的操作要求,能实生成一个字符串、联接成一个新串、串的清除等一系列操作。1.ADTADTLIST{数据对象:数据关系:StrCopy(&t,s)初始条件:chars是字符串常量。操作结果:生成一个其值等于char
2、s的串T。StrCopy(&T,S)初始条件:串S存在。操作结果:若S为空串,则返回TURE,否则返回FAKSE。StrCompare(s)]初始条件:串s和T存在。操作结果:若s>t,则返回值>0;若返回值s=t,则返回值=0;若s3、defineMAXSIZE40/*存储空间初始分配量*/typedefintStatus;/*Status是函数的类型,其值是函数结果状态代码,如OK等*/typedefcharString[MAXSIZE+1];/*0号单元存放串的长度*//*输出字符串T*/voidStrPrint(StringT){inti;for(i=1;i<=T[0];i++)printf("%c",T[i]);printf("");}/*生成一个其值等于chars的串T*/StatusStrAssign(StringT,char*chars){inti;if(strle4、n(chars)>MAXSIZE)returnERROR;else{T[0]=strlen(chars);for(i=1;i<=T[0];i++)T[i]=*(chars+i-1);returnOK;}}/*返回串的元素个数*/intStrLength(StringS){returnS[0];}/*初始条件:串S和T存在*//*操作结果:若S>T,则返回值>0;若S=T,则返回值=0;若S5、!=T[i])returnS[i]-T[i];returnS[0]-T[0];}/*用T返回S1和S2联接而成的新串。若未截断,则返回TRUE,否则FALSE*/StatusConcat(StringT,StringS1,StringS2){inti;if(S1[0]+S2[0]<=MAXSIZE){/*未截断*/for(i=1;i<=S1[0];i++)T[i]=S1[i];for(i=1;i<=S2[0];i++)T[S1[0]+i]=S2[i];T[0]=S1[0]+S2[0];returnTRUE;}else{/*截断S2*/for(i=1;i6、<=S1[0];i++)T[i]=S1[i];for(i=1;i<=MAXSIZE-S1[0];i++)T[S1[0]+i]=S2[i];T[0]=MAXSIZE;returnFALSE;}}/*用Sub返回串S的第pos个字符起长度为len的子串。*/StatusSubString(StringSub,StringS,intpos,intlen){inti;if(pos<17、8、pos>S[0]9、10、len<011、12、len>S[0]-pos+1)returnERROR;for(i=1;i<=len;i++)Sub[i]=S[pos+i-1];Sub[0]=13、len;returnOK;}intmain(){inti,j,opp;chars;Stringt,s1,s2,sub;Statusk;printf("1.生成串2.求串长3.串比较");printf("4.串连接5.求子串");printf("0.退出请选择你的操作:");while(opp!='0'){scanf("%d",&opp);switch(opp){case1:k=StrAssign(s1,"wangshang");if(!k){printf("串长超过MAXSIZE(=%d)",MAXSIZE);exi14、t(0);}printf("串s1为:");StrPrint(s1);printf("")
3、defineMAXSIZE40/*存储空间初始分配量*/typedefintStatus;/*Status是函数的类型,其值是函数结果状态代码,如OK等*/typedefcharString[MAXSIZE+1];/*0号单元存放串的长度*//*输出字符串T*/voidStrPrint(StringT){inti;for(i=1;i<=T[0];i++)printf("%c",T[i]);printf("");}/*生成一个其值等于chars的串T*/StatusStrAssign(StringT,char*chars){inti;if(strle
4、n(chars)>MAXSIZE)returnERROR;else{T[0]=strlen(chars);for(i=1;i<=T[0];i++)T[i]=*(chars+i-1);returnOK;}}/*返回串的元素个数*/intStrLength(StringS){returnS[0];}/*初始条件:串S和T存在*//*操作结果:若S>T,则返回值>0;若S=T,则返回值=0;若S5、!=T[i])returnS[i]-T[i];returnS[0]-T[0];}/*用T返回S1和S2联接而成的新串。若未截断,则返回TRUE,否则FALSE*/StatusConcat(StringT,StringS1,StringS2){inti;if(S1[0]+S2[0]<=MAXSIZE){/*未截断*/for(i=1;i<=S1[0];i++)T[i]=S1[i];for(i=1;i<=S2[0];i++)T[S1[0]+i]=S2[i];T[0]=S1[0]+S2[0];returnTRUE;}else{/*截断S2*/for(i=1;i6、<=S1[0];i++)T[i]=S1[i];for(i=1;i<=MAXSIZE-S1[0];i++)T[S1[0]+i]=S2[i];T[0]=MAXSIZE;returnFALSE;}}/*用Sub返回串S的第pos个字符起长度为len的子串。*/StatusSubString(StringSub,StringS,intpos,intlen){inti;if(pos<17、8、pos>S[0]9、10、len<011、12、len>S[0]-pos+1)returnERROR;for(i=1;i<=len;i++)Sub[i]=S[pos+i-1];Sub[0]=13、len;returnOK;}intmain(){inti,j,opp;chars;Stringt,s1,s2,sub;Statusk;printf("1.生成串2.求串长3.串比较");printf("4.串连接5.求子串");printf("0.退出请选择你的操作:");while(opp!='0'){scanf("%d",&opp);switch(opp){case1:k=StrAssign(s1,"wangshang");if(!k){printf("串长超过MAXSIZE(=%d)",MAXSIZE);exi14、t(0);}printf("串s1为:");StrPrint(s1);printf("")
5、!=T[i])returnS[i]-T[i];returnS[0]-T[0];}/*用T返回S1和S2联接而成的新串。若未截断,则返回TRUE,否则FALSE*/StatusConcat(StringT,StringS1,StringS2){inti;if(S1[0]+S2[0]<=MAXSIZE){/*未截断*/for(i=1;i<=S1[0];i++)T[i]=S1[i];for(i=1;i<=S2[0];i++)T[S1[0]+i]=S2[i];T[0]=S1[0]+S2[0];returnTRUE;}else{/*截断S2*/for(i=1;i
6、<=S1[0];i++)T[i]=S1[i];for(i=1;i<=MAXSIZE-S1[0];i++)T[S1[0]+i]=S2[i];T[0]=MAXSIZE;returnFALSE;}}/*用Sub返回串S的第pos个字符起长度为len的子串。*/StatusSubString(StringSub,StringS,intpos,intlen){inti;if(pos<1
7、
8、pos>S[0]
9、
10、len<0
11、
12、len>S[0]-pos+1)returnERROR;for(i=1;i<=len;i++)Sub[i]=S[pos+i-1];Sub[0]=
13、len;returnOK;}intmain(){inti,j,opp;chars;Stringt,s1,s2,sub;Statusk;printf("1.生成串2.求串长3.串比较");printf("4.串连接5.求子串");printf("0.退出请选择你的操作:");while(opp!='0'){scanf("%d",&opp);switch(opp){case1:k=StrAssign(s1,"wangshang");if(!k){printf("串长超过MAXSIZE(=%d)",MAXSIZE);exi
14、t(0);}printf("串s1为:");StrPrint(s1);printf("")
此文档下载收益归作者所有