ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:78.82KB ,
资源ID:6252039      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6252039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验三 串基本操作的实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验三 串基本操作的实现.docx

1、实验三 串基本操作的实现实验三 串基本操作的实现【实验课程名称】数据结构【实验项目名称】串基本操作的实现【实验目的】1 理解定长顺序串的存储结构及基本操作的定义2 掌握定长顺序串的基本操作;3 学会设计实验数据验证程序。【实验仪器及环境】计算机,window xp操作系统,VC+6.0【实验内容及步骤】1. 存储结构定义: define MAXSTRLEN 255 /串的长度最大为255 typedef unsigned char SStringMAXSTRLEN+1; /0号单元存放串的长度,其最大值刚好是2552. 实现的基本操作:StrAssign (&T, chars)初始条件:cha

2、rs 是串常量。操作结果:赋于串T的值为 chars。StrCopy (&T, S)初始条件:串 S 存在。操作结果:由串 S 复制得串 T。 DestroyString (&S)初始条件:串 S 存在。操作结果:串 S 被销毁。 StrEmpty (S)初始条件:串 S 存在。操作结果:若 S 为空串,则返回 TRUE,否则返回 FALSE。 StrCompare (S, T)初始条件:串 S 和 T 存在。操作结果:若ST,则返回值=0;若S=T,则返回值0;若ST,则返回值0。StrLength (S)初始条件:串 S 存在。操作结果:返回串 S 序列中的字符个数,即串的长度。Clear

3、String (&S)初始条件:串 S 存在。操作结果:将 S 清为空串。Concat (&T, S1, S2) 初始条件:串 S1 和 S2 存在。 操作结果:用 T 返回由 S1 和 S2 联接而成的新串。 SubString (&Sub, S, pos, len) 初始条件:串S存在,1posStrLength(S)且0lenStrLength(S)-pos+1。 操作结果:用 Sub 返回串S的第 pos 个字符起长度为 len 的子串。 Index (S, T, pos) 初始条件:串S和T存在,T 是非空串,1posStrLength(S)。 操作结果:若主串S中存在和串T值相同的

4、子串,则返回它在主串S中第pos个字 符之后第一次出现的位置;否则函数值为0。Replace (&S, T, V) 初始条件:串 S,T 和 V 存在,T 是非空串。 操作结果:用V替换主串S中出现的所有与T相等的不重叠的子串。 StrInsert (&S, pos, T) 初始条件:串 S 和 T 存在,1posStrLength(S)1。 操作结果:在串 S 的第 pos 个字符之前插入串 T。 StrDelete (&S, pos, len) 初始条件:串 S 存在,1posStrLength(S)-len+1。 操作结果:从串 S 中删除第 pos 个字符起长度为 len 的子串。实验

5、源代码:#include#include#include#includeusing namespace std;#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define TRUE 1#define FALSE 0#define OK 1#define MAXSTRLEN 255 /用户可在内定义最大串长typedef unsigned char SStringMAXSTRLEN+1; /0号单元存放串长度typedef int Status; /Status 是函数的类型,其值是函数结果的代码typedef int ElemT

6、ype;/chars 是串常量,赋于串T的值为chars;void StrAssign(SString &T, char chars255) int length,i=0; length=strlen(chars); if(length255) cout字符串长度超出范围,将截取前个字符;endl; for(i=0;iMAXSTRLEN;i+) Ti+1=charsi; T0=255; else for(i=0;ilength;i+) Ti+1=charsi; T0=length; /串S 存在,由串S 复制得串T;void StrCopy(SString &T, SString S) int

7、 i=0; while(i=S0) Ti=Si; i+; /销毁串void DestroyString(SString &S) S0=0; cout串已被销毁;endl;/串S 存在,若S 为空串,则返回TRUE,否则返回FALSE。Status StrEmpty(SString S) if(S0=0) cout该串为空串;endl; return TRUE; else cout该串不为空串;T,则返回值0;/若S=T,则返回值=0;若ST,则返回值T0) return 1; else if(S0T0) return (-1); else for(i=1;i=S0;i+) if(Si=Ti)

8、k=1; else break; if(k=1) return 0; else return 2; /串S 存在,返回串S 序列中的字符个数,即串的长度。Status StrLength(SString S) return S0;/串S 存在,将S 清为空串。void ClearString(SString &S) int i; for(i=1;i=S0;i+) Si=0; S0=0; cout串已被重置为空串;MAXSTRLEN) cout两串联接后超出长度范围,将进行截断;endl; for(i=1;i=S10;i+) Ti=S1i; if(iMAXSTRLEN) while(iMAXST

9、RLEN) i+;j+; Ti=S2j; T0=MAXSTRLEN; else for(i=1;i=S10;i+) Ti=S1i; for(j=1;j=1&pos=0&len=StrLength(S)-pos+1) Sub0=len; for(i=pos;i=pos+len-1;i+) Subj=Si; j+; else cout输入len的值不合法;endl; else cout输入pos的值不合法;0) n=StrLength(S); m=StrLength(T); i=pos; while(i=n-m+1) SubString(Sub,S,i,m); if(StrCompare(Sub,

10、T)!=0) i+; else return i; return 0;/串S,T 和V 存在,T 是非空串/用V替换主串S中出现的所有与T相等的不重叠的子串void Replace(SString &S,SString T,SString V) int n,i,j=1; while(n=Index(S,T,1)!=0) j=1; for(i=n;iMAXSTRLEN) cout插入后会超出串长度范围,将进行截取;MAXSTRLEN-m;i-) Si=Sj; j+; j=1; for(i=pos;i=n+pos;i-) Si=Sj; j-; j=1; for(i=pos;in+pos;i+) S

11、i=Tj; j+; S0=u+n; void StrDelete(SString &S,int pos,int len)/串S 存在,posStrLength(S)-len+1/从串S 中删除第pos 个字符起长度为len 的子串 int n,i,j; n=StrLength(S); if(posStrLength(S)-len+1) cout输入的pos值不合法;endl; else j=pos+len; for(i=pos;i=n;i+) Si=Sj; j+; S0=n-len; Sn-len+1=0; void shuru(SString &T) char chars256; cout请

12、输入你要的字符数据:endl; gets(chars); StrAssign(T,chars);void shuchu(SString T) for(int i=0;iT0;i+) coutTi+1; coutendl;int main() int n,pos,len; SString T2,T1,S,S1,S2,Sub,V; shuru(S1); coutendl; cout串S1为:endl; shuchu(S1); coutendl; shuru(T1); coutpos; n=Index(S1,T1,pos); if(n=0) cout主串中不存在这样的子串;endl; else co

13、ut第一个这样的子串在主串中第pos个字符后出现的位置为:nendl; coutendl; getchar(); shuru(T2); shuru(V); Replace(S1,T2,V); cout取代后的串S为:endl; shuchu(S1); coutendl; shuru(S2); Concat (S,S1,S2); cout联接后的新串S为:endl; shuchu(S); coutendl; cout串S的长度为:StrLength(S)endl; coutendl; DestroyString(S1); DestroyString(S2); coutendl; return 0;【测试数据及实验结果】 测试数据及实验结果如下:【实验小结】定长顺序串的存储结构与c语言中用字符指针存储字符串相比有何优点?答:优点是定长顺序串的存储结构类似于数组,调用起来比较方便快捷.【源代码说明】1 文件名:shiyan3.cpp

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1