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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验4顺序串和链串的实现.docx

1、数据结构实验4顺序串和链串的实现数据结构课程实验报告实验名称顺序串和链串的实现实验序号4实验日期2012-5-2姓 名曹志华院系计算机科学与信息工程学院班 级10104115学 号1010411501专 业计算机科学与技术指导教师武伟成 绩教师评语一、实验目的和要求1.理解串和一般线性表之间的差异;2.重点理解在顺序串上和链串上实现串的基本运算算法;3.掌握串的简单匹配算法和KMP算法;4.灵活运算串这种数据结构解决一些基本问题。二、实验项目摘要实验1:编写一个程序,实现顺序串的各种基本算法,并在此基础上设计一个主程序完成如下功能:1.建立串s=“abcdefghefghijklmn”和串s1

2、=“xyz” 2 输出串s 3 输出串s的长度 4 在串s的第9个字符位置插入串s1而产生c串s2 5 输出串s2 6 删除串s第2个字符开始的5个字符替换成串s2 7 输出串s2 8 将串s的第2个字符开始的5个字符替换成串s1而产生串s2 9 输出串s2 10提取串s的第2个字符开始的10个字符而产生串s3 11输出串s3 12将串s1和串s2连接起来而产生串s4 13输出串s4实验2:编写一个程序,实现链串的各种基本算法,并在此基础上设计一个主程序完成如下功能:1.建立串s=“abcdefghefghijklmn”和串s1=“xyz” 2 输出串s 3 输出串s的长度 4 在串s的第9个

3、字符位置插入串s1而产生c串s2 5 输出串s2 6 删除串s第2个字符开始的5个字符替换成串s2 7 输出串s2 8 将串s的第2个字符开始的5个字符替换成串s1而产生串s2 9 输出串s2 10提取串s的第2个字符开始的10个字符而产生串s3 11输出串s3 12将串s1和串s2连接起来而产生串s4 13输出串s4三、实验预习内容1.首先掌握串的基本概念:串是由零个或多个字符组成的有限序列;2.灵活掌握串的存储结构3.掌握串的顺序存储结构和链式存储结构串赋值运算算法串复制运算算法求串长运算算法判断串相等运算算法串连接运算算法求子串运算算法查找子串位置运算算法子串插入运算算法子串删除运算算法

4、子串替换运算算法输出串运算算法4. 理解串的模式匹配 三、实验结果与分析实验结果:实验1:实验2:实验分析: 通过本次试验,我了解并掌握了串的基础知识,并利用串的顺序存储结构和链式存储结构,编写了两个程序,串是一种线性结构,是由零个或多个字符组成的优先序列,串的处理在计算机非数值处理中占有重要的地位,如信息检索系统、文字编辑等都以串作为处理对象。所以串很重要。在今后的学习中我会多加练习,更熟练的掌握串的应用。源代码: 实验1:#include#include#define MaxSize 1024 typedef char ElemType;typedef struct char data M

5、axSize; int length ;SqString;/建立串s void StrAssign(SqString &s,char cstr) /串的赋值(s为引用型参数) int i; for(i=0;cstri!=0;i+) s.datai=cstri; s.length=i; /串长运算 int StrLength(SqString s) return(s.length); /子串插入 SqString InsStr(SqString s1,int i,SqString s2) int j; SqString str; str.length=0; if(is1.length+1) /参

6、数不正常时返回空串 return str; for(j=0;ji-1;j+)/将s1.data【0.。i-2】复制到str str.dataj=s1.dataj; for(j=0;js2.length;j+)/将s2.data【0.。s2.length-1】复制到str str.datai+j-1=s2.dataj; for(j=i-1;js1.length;j+)/将s1.data【i-1.s1.length-1】复制到str str.datas2.length+j=s1.dataj ; str.length=s1.length+s2.length; return str; /删除串 SqS

7、tring DelStr(SqString s,int i,int j) int k; SqString str; str.length=0; if(is.length|i+js.length+1)/参数不正常时返回空串 return str; for(k=0;ki-1;k+)/将s.data【0.。i-2】复制到str str.datak=s.datak; for(k=i+j-1;ks.length;k+)/将s.data【i+j-1.s.length-1】复制到str str.datak-j=s.datak; str.length=s.length-j; return str; /子串替换

8、 SqString RepStr(SqString s,int i,int j,SqString t) int k; SqString str; if(is.length|i+js.length)/参数不正常时返回空串 return str; for(k=0;ki-1;k+)/将s.data【0.。i-2】复制到str str.datak=s.datak; for(k=0;kt.length;k+)/将t.data【0.。t.length】复制到str str.datai+k-1=t.datak; for(k=i+j-1;ks.length;k+)/将s.data【i+j-1.s.length

9、-1】复制到str str.datak-j=s.datak; str.length=s.length-j+t.length; return str; /提取串-求子串 SqString SuStr(SqString s,int i,int j) SqString str; int k; str.length=0; if(is.length|js.length) return str;/参数不正常时返回空串 for(k=i-1;ki+j-1;k+)/将s.data【i.i+j】复制到str str.datak-i+1=s.datak; str.length=j; return str; /串连接

10、 SqString Concat(SqString s,SqString t) SqString str; int i; str.length=s.length+t.length; for(i=0;is.length;i+) str.datai=s.datai; for(i=0;i0) for(i=0;is.length;i+) printf(%c,s.datai); printf(n); /主函数 void main() SqString s,s1,s2,s3,s4; printf(1.建立串s=abcdefghefghijklmn和串s1=xyz); printf(n); StrAssig

11、n(s,abcdefghijklmn); StrAssign(s1,xyz); printf(n); printf(2.输出串s);DisStr(s); printf(n); printf(3.输出串s的长度:%dn,StrLength(s); printf(n); printf(4.在串s的第9个字符位置插入串s1而产生c串s2n); s2=InsStr(s,9,s1); printf(n); printf(5.输出s2:); DisStr(s2); printf(nn); printf(6.删除串s第2个字符开始的5个字符替换成串s2n); s2=DelStr(s,2,5); printf

12、(n); printf(7.输出串s2:);DisStr(s2); printf(n); printf(8.将串s的第2个字符开始的5个字符替换成串s1而产生串s2n); s2=RepStr(s,2,5,s1); printf(n); printf(9.输出串s2:);DisStr(s2); printf(n); printf(10.提取串s的第2个字符开始的10个字符而产生串s3n); s3=SuStr(s,2,10); printf(n); printf(11. 输出串s3:);DisStr(s2); printf(n); printf(12.将串s1和串s2连接起来而产生串s4n); s

13、4=Concat(s1,s2); printf(n); printf(13.输出串s4:);DisStr(s2); printf(n); 实验2:#include#include#define MaxSize 1024 typedef char ElemType;typedef struct snode char data ; struct snode *next ;LiString;/建立串-赋值void StrAssign(LiString *&s,char cstr) int i; LiString *r,*p; s=(LiString *)malloc(sizeof(LiString)

14、; r=s; for(i=0;cstri!=0;i+) p=(LiString *)malloc(sizeof(LiString); p-data=cstri; r-next=p;r=p; r-next=NULL; /串长运算 int StrLength(LiString *s) int i=0; LiString *p=s-next; while(p!=NULL) i+; p=p-next; return i; /子串插入 LiString *InsStr(LiString *s,int i,LiString *t) int k; LiString *str,*p=s-next,*p1=t-

15、next,*q,*r; str=(LiString *)malloc(sizeof(LiString); str-next=NULL; r=str; if(iStrLength(s)+1) return str; for(k=1;kdata=p-data; r-next=q;r=q; p=p-next; while(p1!=NULL) q=(LiString *)malloc(sizeof(LiString); q-data=p1-data; r-next=q;r=q; p1=p1-next; while(p!=NULL) q=(LiString *)malloc(sizeof(LiStrin

16、g); q-data=p-data; r-next=q;r=q; p=p-next; r-next=NULL; return str; /删除串 LiString *DelStr(LiString *s,int i,int j) int k=0; LiString *str,*p=s-next,*q,*r; str=(LiString *)malloc(sizeof(LiString); str-next=NULL; r=str; if(iStrLength(s)|j0) return str; for(k=1;kdata=p-data; r-next=q;r=q; p=p-next; for

17、(k=0;knext; while(p!=NULL) q=(LiString *)malloc(sizeof(LiString); q-data=p-data; r-next=q;r=q; p=p-next; r-next=NULL; return str; /子串替换 LiString *RepStr(LiString *s,int i,int j,LiString *t) int k; LiString *str,*p=s-next,*p1=t-next,*q,*r; str=(LiString *)malloc(sizeof(LiString); r=str; if(iStrLength

18、(s)|jStrLength(s) return str; for(k=0;kdata=p-data;q-next=NULL; r-next=q;r=q; p=p-next; for(k=0;knext; while(p1!=NULL) q=(LiString *)malloc(sizeof(LiString); q-data=p1-data;q-next=NULL; r-next=q;r=q; p1=p1-next; while(p!=NULL) q=(LiString *)malloc(sizeof(LiString); q-data=p-data;q-next=NULL; r-next=

19、q;r=q; p=p-next; r-next=NULL; return str; /提取串-求子串 LiString *SuStr(LiString *s,int i,int j) int k=0; LiString *str,*p=s-next,*q,*r; str=(LiString *)malloc(sizeof(LiString); str-next=NULL; r=str; if(iStrLength(s)|jStrLength(s) return str; for(k=0;kdata=p-data; r-next=q;r=q; p=p-next; r-next=NULL; ret

20、urn str; /串连接 LiString *Concat(LiString *s,LiString *t) LiString *str,*p=s-next,*q,*r; str=(LiString *)malloc(sizeof(LiString); r=str; while(p!=NULL) q=(LiString *)malloc(sizeof(LiString); q-data=p-data; r-next=q;r=q; p=p-next; p=t-next; while(p!=NULL) q=(LiString *)malloc(sizeof(LiString); q-data=p

21、-data; r-next=q;r=q; p=p-next; r-next=NULL; return str; /输出串 int DisStr(LiString *s) LiString *p=s-next; while(p!=NULL) printf(%c,p-data); p=p-next; printf(n); /主函数 void main() LiString *s,*s1,*s2,*s3,*s4; printf(1.建立串s=abcdefghefghijklmn和串s1=xyz); printf(n); StrAssign(s,abcdefghijklmn); StrAssign(s

22、1,xyz); printf(n); printf(2.输出串s);DisStr(s); printf(n); printf(3.输出串s的长度:%dn,StrLength(s); printf(n); printf(4.在串s的第9个字符位置插入串s1而产生c串s2n); s2=InsStr(s,9,s1); printf(n); printf(5.输出s2:); DisStr(s2); printf(nn); printf(6.删除串s第2个字符开始的5个字符替换成串s2n); s2=DelStr(s,2,5); printf(n); printf(7.输出串s2:);DisStr(s2)

23、; printf(n); printf(8.将串s的第2个字符开始的5个字符替换成串s1而产生串s2n); s2=RepStr(s,2,5,s1); printf(n); printf(9.输出串s2:);DisStr(s2); printf(n); printf(10.提取串s的第2个字符开始的10个字符而产生串s3n); s3=SuStr(s,2,10); printf(n); printf(11. 输出串s3:);DisStr(s2); printf(n); printf(12.将串s1和串s2连接起来而产生串s4n); s4=Concat(s1,s2); printf(n); printf(13.输出串s4:);DisStr(s2); printf(n); 注:空间不够,可以增加页码。

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

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