首页 数据结构顺序串和链串实验报告

数据结构顺序串和链串实验报告

举报
开通vip

数据结构顺序串和链串实验报告《数据结构》课程实验报告实验名称顺序串和链串实验序号4实验日期姓名院系班级学号专业指导教师成绩教师评语一、实验目的和要求(1)理解串和一般线形表之间的差异(2)重点掌握在顺序串上和链串上实现串的基本运算算法(3)掌握串的简单匹配算法和KMP算法(4)灵活运用串这种数据结构解决一些综合应用问题二、实验项目摘要编写一个程序algo4-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)建立串s=”abcdefghefghijklmn”...

数据结构顺序串和链串实验报告
《数据结构》课程实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 实验名称顺序串和链串实验序号4实验日期姓名院系班级学号专业指导教师成绩教师评语一、实验目的和要求(1)理解串和一般线形表之间的差异(2)重点掌握在顺序串上和链串上实现串的基本运算算法(3)掌握串的简单匹配算法和KMP算法(4)灵活运用串这种数据结构解决一些综合应用问题二、实验项目摘要编写一个程序algo4-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)建立串s=”abcdefghefghijklmn”和串sl=”xyz”;(2)输出串s;(3)输出串s的长度;(4)在串s的第9个字符位置插入串sl而产生串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。编写一个程序algo4-2.cpp,实现链串的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)建立串s=”abcdefghefghijklmn”和串sl=”xyz”;(2)输出串s;(3)输出串s的长度;(4)在串s的第9个字符位置插入串sl而产生串s2;(5)输出串s2;(6)删除串s的第2个字符开始的5个字符而产生的串s2;(7)输出串s2;(8)将串s的第2个字符开始的5个字符替换成串s1而产生串s2;(9)输出串s2;(10)提取串s的第2个字符开始的10个字符而产生串s3;输出串s3;将串si和串s2连接起来而产生串s4;输出串s4。三、实验预习内容顺序串的基本运算的算法(StrAssign(s,cstr),StrCopy(s,t),StrEquat(s,t),StrLength(s),Concat(s,t),SubStr(s,i,j),InsStr(s1,i,s2),DelStr(s,i,j),RepStr(s,i,j,t),DispStr(s))链串的基本运算的算法(StrAssign(s,cstr),StrCopy(s,t),StrEquat(s,t),StrLength(s),Concat(s,t),SubStr(s,i,j),InsStr(s1,i,s2),DelStr(s,i,j),RepStr(s,i,j,t),DispStr(s))三、实验结果与分析4-1#includevstdio.h>#defineMaxSize100typedefstruct{chardata[MaxSize];intlength;}SqString;voidStrAssign(SqString&s,charcstr[]){inti;for(i=0;cstr[i]!='\0';i++)s.data[i]=cstr[i];s.length=i;}voidStrCopy(SqString&s,SqStringt){inti;for(i=O;ivt.length;i++)s.data[i]=t.data[i];s.length=t.length;}intStrEqual(SqStrings,SqStringt){intsame=1,i;if(s.length!=t.length)same=O;elsefor(i=O;ivs.length;i++)if(s.data[i]!=t.data[i]){same=0;break;}returnsame;}intStrLength(SqStrings){returns.length;}SqStringConcat(SqStrings,SqStringt){SqStringstr;inti;str.length=s.length+t.length;for(i=O;ivs.length;i++)str.data[i]=s.data[i];for(i=O;ivt.length;i++)str.data[s.length+i]=t.data[i];returnstr;}SqStringSubStr(SqStrings,inti,intj){SqStringstr;intk;str.length=0;if(i<=0IIi>s.lengthIIjvOIIi+j-l>s.length)returnstr;for(k=i-1;kvi+j-1;k++)str.data[k-i+1]=s.data[k];str.length=j;returnstr;}SqStringInsStr(SqStrings1,inti,SqStrings2){intj;SqStringstr;str.length=0;if(i<=0IIi>s1.length+1)returnstr;for(j=O;jvi-l;j++)str.data[j]=s1.data[j];for(j=0;jvs2.1ength;j++)str.data[i+j-1]=s2.data[j];for(j=i-1;js.lengthIIi+j>s.length+1)returnstr;for(k=0;kvi-1;k++)str.data[k]=s.data[k];for(k=i+j-1;kvs.length;k++)str.data[k-j]=s.data[k];str.length=s.length-j;returnstr;}SqStringRepStr(SqStrings,inti,intj,SqStringt){intk;SqStringstr;str.length=0;if(i<=0||i>s.length||i+j-1>s.length)returnstr;for(k=0;k0){for(i=O;ivs.length;i++)printf("%c",s.data[i]);printf("\n");}}intmain(){SqStrings,sl,s2,s3,s4;printf("建立串s='abcdefghefghijklmn和串sl='xyz'\n");StrAssign(s,"abcdefghefghijklmn");StrAssign(s1,"xyz");printf("输出串s:");DispStr(s);printf("串s的长度:%d\n",StrLength(s));printf("在串s的第9个字符位置插入串sl而产生串s2\n");s2=InsStr(s,9,s1);printf("输出串s2:");DispStr(s2);printf("删除串s的第2个字符开始的5个字符而产生的串s2\n");s2=DelStr(s,2,5);printf("输出串s2:");DispStr(s2);printf("将串s的第2个字符开始的5个字符替换成串s1而产生串s2\n");s2=RepStr(s,2,5,s1);printf("输出串s2:");DispStr(s2);printf("提取串s的第2个字符开始的10个字符而产生串s3\n");s3=SubStr(s,2,10);printf("输出串s3:");DispStr(s3);printf("将串s1和串s2连接起来而产生串s4\n");s4=Concat(s1,s2);printf("输出串s4:");DispStr(s4);}4-2#include#includevmalloc.h>typedefstructsnodechardata;structsnode*next;}LiString;voidStrAssign(LiString*&s,charcstr[]){inti;LiString*r,*p;s=(LiString*)malloc(sizeof(LiString));r=s;for(i=0;cstr[i]!='\0';i++){p=(LiString*)malloc(sizeof(LiString));p->data=cstr[i];r->next=p;r=p;}r->next=NULL;}voidStrCopy(LiString*&s,LiString*t){LiString*p=t->next,*q,*r;s=(LiString*)malloc(sizeof(LiString));r=s;while(p!=NULL){q=(LiString*)malloc(sizeof(LiString));q->data=p->data;r->next=q;r=q;p=p->next;}r->next=NULL;}intStrEqual(LiString*s,LiString*t){LiString*p=s->next,*q=t->next;while(p!=NULL&&q!=NULL&&p->data==q->data){p=p->next;q=q->next;}if(p==NULL&&q==NULL)return1;elsereturn0;intStrLength(LiString*s){inti=0;LiString*p=s->next;while(p!=NULL){i++;p=p->next;}returni;}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->data;r->next=q;r=q;p=p->next;}r->next=NULL;returnstr;}LiString*SubStr(LiString*s,inti,intj){intk;LiString*str,*p=s->next,*q,*r;str=(LiString*)malloc(sizeof(LiString));str->next=NULL;r=str;if(i<=0IIi>StrLength(s)IIjvOIIi+j-l>StrLength(s))returnstr;for(k=0;kvi-1;k++)p=p->next;for(k=1;k<=j;k++){q=(LiString*)malloc(sizeof(LiString));q->data=p->data;r->next=q;r=q;p=p_>next;}r->next=NULL;returnstr;}LiString*InsStr(LiString*s,inti,LiString*t){intk;LiString*str,*p=s->next,*pl=t->next,*q,*r;str=(LiString*)malloc(sizeof(LiString));str->next=NULL;r=str;if(i<=0IIi>StrLength(s)+1)returnstr;for(k=1;kvi;k++){q=(LiString*)malloc(sizeof(LiString));q->data=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(LiString));q->data=p->data;r->next=q;r=q;p=p->next;}r->next=NULL;returnstr;}LiString*DelStr(LiString*s,inti,intj){intk;LiString*str,*p=s->next,*q,*r;str=(LiString*)malloc(sizeof(LiString));r=str;if(iv=OIIi>StrLength(s)IIjvOIIi+j-l>StrLength(s))returnstr;for(k=0;kvi-1;k++){q=(LiString*)malloc(sizeof(LiString));q->data=p->data;r->next=q;r=q;p=p->next;}for(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;returnstr;}LiString*RepStr(LiString*s,inti,intj,LiString*t){intk;LiString*str,*p=s->next,*p1=t->next,*q,*r;str=(LiString*)malloc(sizeof(LiString));str->next=NULL;r=str;if(i<=0IIi>StrLength(s)IIj<0IIi+j-1>StrLength(s))returnstr;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;pl=pl->next;}while(p!=NULL){q=(LiString*)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}returnstr;}voidDispStr(LiString*s){LiString*p=s->next;while(p!=NULL){printf("%c",p->data);p=p->next;}printf("\n");}intmain(){LiString*s,*s1,*s2,*s3,*s4;printf("建立串s和串s1\n");StrAssign(s,"abcdefghefghijklmn");StrAssign(s1,"xyz");printf("输出串s:");DispStr(s);printf("串s的长度:%d\n",StrLength(s));printf("在串s的第9个字符位置插入串s1而产生串s2\n");s2=InsStr(s,9,s1);printf("输出串s2:");DispStr(s2);printf("删除串s第2个字符开始的5个字符而产生串s2\n");s2=DelStr(s,2,3);printf("输出串s2:");DispStr(s2);printf("将串s第2个字符开始的5个字符替换成串s1而产生串s2\n");s2=RepStr(s,2,5,s1);printf("输出串s2:");DispStr(s2);printf("提取串s的第2个字符开始的10个字符而产生串s3\n");s3=SubStr(s,2,10);printf("(输出串s3:");DispStr(s3);printf("将串s1和串s2连接起来而产生串s4\n");s4=Concat(s1,s2);注:空间不够,可以增加页码。
本文档为【数据结构顺序串和链串实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
jinzhoushj
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:7
分类:
上传时间:2022-05-03
浏览量:2