数据结构串的基本操作及应用实验报告(常用版).doc
《数据结构串的基本操作及应用实验报告(常用版).doc》由会员分享,可在线阅读,更多相关《数据结构串的基本操作及应用实验报告(常用版).doc(58页珍藏版)》请在咨信网上搜索。
1、数据结构串的基本操作及应用实验报告(常用版)(可以直接使用,可编辑 完整版资料,欢迎下载)实验日期 2021.5.10 教师签字 成绩 实 验 报 告【实验名称】 第四章串的基本操作及应用 【实验目的】1、熟悉将算法转换成程序代码的过程。2、了解串的逻辑结构特性,熟练掌握串顺序存储结构的C 语言描述方法。3、熟练掌握串的基本操作:求长度、串的连接、插入、删除等,掌握串的存取特性。【实验原理】1. 串可以可以有三种存储方式,分别为顺序存储、堆分配存储、链式存储,串的基本操作在这三种存储方式下操作。2. 串的模式匹配KMP算法在每一趟匹配过程中出现字符不等时,不需回溯指针,而是利用已经得到的部分匹
2、配结果的结果将模式向右滑动尽可能远的一段距离,继续进行比较。【实验内容】1. 串的顺序存储表示及基本操作(插入、删除、求串长、合并连接串、求子串、串比较等)#include#include#include#include#define SIZE 20struct HStringchar chSIZE;int length;void StrInsert(HString &s,int pos,HString t)int i,j;if(poss.length+1)cout=pos-1;-i)s.chi+t.length=s.chi;for(j=0;j=t.length-1;j+)s.chpos-1+
3、j=t.chj;s.length+=t.length;void StrDelete(HString &s,int pos,int len)int i;int v=pos-1;if(poss.length|lens.length-pos+1)coutERROR!;for(i=pos+len-1;i=s.length-1;i+)s.chv+=s.chi;s.length-=len;void StrAssign(HString &t,char chars)int i;char *c;for(i=0,c=chars;*c;+i,+c);if(!i)t.length=0;elsefor(int j=0;
4、ji;j+)t.chj=charsj;t.length=i;int StrLen(HString &s)return s.length;int StrCompare(HString &s,HString t)for(int i=0;is.length&it.length;i+)if(s.chi!=t.chi)return (int)(t.chi-s.chi);return s.length-t.length;void Concat(HString &t,HString s1,HString s2)int i=s1.length+s2.length;for(i=0;is1.length;i+)t
5、.chi=s1.chi;t.length=s1.length+s2.length;for(i=s1.length;it.length;i+)t.chi=s2.chi-s1.length;int SubString(HString &sub,HString s,int pos,int len)if(poss.length|lens.length-pos+1)coutERROR!endl;return 0;if(!len)sub.length=0;elseint i=len;for(i=0;ilen;i+)sub.chi=s.chpos+i-1;sub.length=len;void Displa
6、y(HString &t)for(int i=0;i=t.length-1;i+)coutt.chi;coutendl;void main()int i;char s20;docout选择您要进行的串的基本操作:endl;cout1.插入endl2.删除endl3.串连结endl4.取子串endl5.串比较endl6.求串长endl7.结束i;switch(i)case 1:HString s,t;int pos;couts.ch;StrAssign(s,s.ch);coutendl;coutt.ch;StrAssign(t,t.ch);coutendl;coutpos;StrInsert(s
7、,pos,t);cout插入之后串变为:;Display(s); break;case 2:HString s;int pos,len;couts.ch;StrAssign(s,s.ch);coutpos;coutlen;StrDelete(s,pos,len);cout删除之后串变为:;Display(s);break;case 3:HString s1,s2,t;couts1.ch;StrAssign(s1,s1.ch);couts2.ch;StrAssign(s2,s2.ch);Concat(t,s1,s2);couts1与s2合并后的串为:;Display(t);break;case
8、4:HString sub,s;int pos,len;couts.ch;StrAssign(s,s.ch);coutpos;coutlen;SubString(sub,s,pos,len);cout取出的子串为:;Display(sub);break;case 5:HString s,t;int value;couts.ch;StrAssign(s,s.ch);coutt.ch;StrAssign(t,t.ch);value=StrCompare(s,t);if(value0) cout串s大于串tendl;else if(value=0) cout串s等于串tendl;else cout串
9、s小于串tendl;coutendl;break;case 6:HString s;char *chars;int val;couts.ch;StrAssign(s,s.ch);val=StrLen(s);cout串的长度为:valendl;break;case 7:cout操作结束!endl;break;default:cout输入错误!请重新输入!endl;break;while(i!=7);2. 串的堆分配存储表示及基本操作(插入、删除、求串长、合并连接串、求子串、串比较等)#include#include#include#includestruct HStringchar *ch;in
10、t length;void StrInsert(HString &s,int pos,HString t)int i,j;if(poss.length+1)cout=pos-1;-i)s.chi+t.length=s.chi;for(j=0;j=t.length-1;j+)s.chpos-1+j=t.chj;s.length+=t.length;void StrDelete(HString &s,int pos,int len)int i;int v=pos-1;if(poss.length|lens.length-pos+1)coutERROR!;for(i=pos+len-1;i=s.le
11、ngth-1;i+)s.chv+=s.chi;s.length-=len;void StrAssign(HString &t,char *chars)int i;char *c;for(i=0,c=chars;*c;+i,+c);if(!i)t.ch=NULL;t.length=0;elset.ch=(char *)malloc(i*sizeof(char);for(int j=0;ji;j+)t.chj=charsj;t.length=i;int StrLen(HString &s)return s.length;int StrCompare(HString &s,HString t)for
12、(int i=0;is.length&it.length;i+)if(s.chi!=t.chi)return (int)(t.chi-s.chi);return s.length-t.length;void Concat(HString &t,HString s1,HString s2)int i=s1.length+s2.length;t.ch=(char *)malloc(i*sizeof(char);for(i=0;is1.length;i+)t.chi=s1.chi;t.length=s1.length+s2.length;for(i=s1.length;it.length;i+)t.
13、chi=s2.chi-s1.length;int SubString(HString &sub,HString s,int pos,int len)if(poss.length|lens.length-pos+1)coutERROR!endl;return 0;if(!len)sub.ch=NULL;sub.length=0;elseint i=len;sub.ch=(char *)malloc(i*sizeof(char);for(i=0;ilen;i+)sub.chi=s.chpos+i-1;sub.length=len;void Display(HString &t)for(int i=
14、0;i=t.length-1;i+)coutt.chi;coutendl;void main()int i;char s20;cout选择您要进行的串的基本操作:endl;docout1.插入endl2.删除endl3.串连结endl4.取子串endl5.串比较endl6.求串长endl7.结束i;switch(i)case 1:HString s,t;char a20,b20;char *sa,*sb;int pos;couta;sa=a;StrAssign(s,sa);coutendl;coutb;sb=b;StrAssign(t,sb);coutendl;coutpos;StrInser
15、t(s,pos,t);cout插入之后串变为:;Display(s); break;case 2:HString s;char str20;char *chars;int pos,len;coutstr;chars=str;StrAssign(s,chars);coutpos;coutendl;coutlen;coutendl;StrDelete(s,pos,len);cout删除之后串变为:;Display(s);break;case 3:HString s1,s2,t;char a20,b20;char *sa,*sb;couta;sa=a;StrAssign(s1,sa);coutb;s
16、b=b;StrAssign(s2,sb);Concat(t,s1,s2);couts1与s2合并后:;Display(t);break;case 4:HString sub,s;char a20;char *sa;int pos,len;couta;sa=a;StrAssign(s,sa);coutpos;coutlen;SubString(sub,s,pos,len);cout该子串为:;Display(sub);break;case 5:HString s,t;int value;char a20,b20;char *sa,*sb;couta;sa=a;StrAssign(s,sa);co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 基本 操作 应用 实验 报告 常用
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。