《数据结构顺序串和链串实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构顺序串和链串实验报告.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据结构课程实验报告疑辎顺序串和链串实验序号4实验日期姓名院系班级学号专业指导狮成绩教师评语-实验目的和要求(1)理辘和普徽形数间的捐(2)重醒提确牌上腌串上场物基本运算就(3)掌麟的简单蛾算法和KMP算法(4)趣运廨研辘躺懒一些综合应用问题二仁项目艘编写一个程序algo4-1 .cpp,实班孵串的各种基本运算井棚塞船被计一个主解皖胭吓动能(1) 串s=abcdefghefghijklmn和串sl=xyz”;(2)输出串s;(3)输出串s的长1;(4)在串 s的第9个字符位置插入用si胪生用 S2;(5)输出串s2;(6)删除串s的第2个字符刑台的5个字瓶产生解S2;(7)输出串S2;(8)将
2、串 s的第2个字符开始的5个字符替换邮$1移生串S2;(9)输出串S2;(10)提取串 s的第2个字符开始的10个字符而产甥S3;(11)输出串S3;(12)将串s1和串S2连接起来而产生串s4;(13)输出串s4o编写一悌序algo4-2.cpp,实雕里的各牌本运第并在螳掰喷计一个主修耕砌下功能:(1) 串s=abcdefghefghijklmn”和串sl=xyz”;(2)输出串s;(3)输出串s的长1;(4)在串 $的第9个字符位置插入串si耐1串您(5)输出串S2;(6)删除串s的第2个字符刑蒯5伸肺产生解S2;(7)输出串s2;(8)将串 s的第2个字符开始的5个铺替换成串S1胪甥S2
3、;(9)输出串S2;(10)提取串 s的第2个字符开始的10个字符而产般S3;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=q;r=q;p=p-next;return str;void DispStr(LiString *s) LiString *p=s-next;while (p!=NULL)p=p-next;)int main()(LiString *s,*s1,*s2,*s3,*s4;建立串 s和串输出串串s的长
4、度在串$的第9伸符谴插入串si胪甥s2=lnsStr(s,9,s1); 输出串 册除串s第2俾符开始的5个字辆产生用s2=DelStr(s,2,3);输出串s1而产装将串si 2个字符开始的5个字符麟邮s2=RepStr(s,255,s1);输出串提蟒 s的第2伸符开始的 10个字辆产殖 s3=SubStr(s,2,10);输出串将串S1和串S2麒睐T生串s4=Concat(s1 ,s2);输出串DispStr(s4);it:空间不够,可以增顺碌s4;(11)输出串S3;(12)将串s1和串s2连接起来萨生串三、实额加容顺序串的基本运算的算法(sJJ) ,lnsStr( s1 J,s2) 链串
5、的基本运算的算法(s,i,j) ,lnsStr( s1 ,i,s2)(13)输出串s4o(StrAssigii s,cstr) ,StrCopy s,t) ,StrEqua(t s5t) ,StrLengtB s) ,Conca(t s,t) ,SubStr ,DelStr( s,ij) ,RepStr( s,ij,t) ,DispStr( s)(StrAssign ( s,cstr) ,StrCopy s3t) ,StrEquai s,t) ,Strijength( s) ,Concat s,t) ,SubStr ,DelStr( s,ij) ,RepStr( s3ij,t) ,DispSt
6、r( s)三、蝴果与淅4-1include #define MaxSize 100 typedef struct char dataMaxSize; int length; SqString;void StrAssign(SqString &s,char cstr) int i;s.datai=cstri;s.length=i;void StrCopy(SqString &s,SqString t) int i;for (i=0;it.length;i+4-)s.datai=t.datai;s.length=t.length;int StrEqual(SqString s,SqString t
7、) int same=1,i;if (s.lengthkt.length)same=O;elsefor (i=0;is.length;i+4-) if (s.datai!=t.datai) same=0; break; return same;)int StrLength(SqString s)(return s.length;SqString Concat(SqString s,SqString t) SqString str;int i;str.length=s.length-i-t.length;for (i=0;is.length;i+4-) str.datai=s.datai;for
8、 (i=0;it.length;i+4-)str.datas.length+i=t.datai;return str;SqString SubStr(SqString s,int i,int j) SqString str;int k;str.length=O;if (is.length | js.length) return str;for (k=i-1 ;ki+j-1 ;k+)str.datak-i+1 =s.datak;str.length=j; return str;)SqString lnsStr(SqString s1,int i,SqString s2) intj;SqStrin
9、g str;str.length=O;if (is1.length+1)return str;for (j=O;ji-1 ;j+)str.dataj=s1 .dataj;for (j=0;js2.length;j+)str.datai+j-1 =s2.dataj;for (j=i-1 ;js1.length;j+)str.datas2.length+j=s1 .dataj;str.length=s1 .length+s2.length;return str;SqString DelStr(SqString s,int i,int j) int k;SqString str;str.length
10、=O;if (is.length | i+js.length+1) return str;for (k=0;ki-1 ;k+) str.datak=s.datak;for (k=i+j-1 ;ks.length;k+) str.datak-j=s.datak;str.length=s.length-j;return str;SqString RepStr(SqString sjnt ijntj,SqString t) int k;SqString str;str.length=O;if (is.length | i+j-1s.length) return str;for (k=0;ki-1 ;
11、k+) str.datak=s.datak;for (k=O;kt.length;k+)str.datai+k-1 =t.datak;for (k=i+j-1 ;k0)| for (i=O;is.length;i+)int main()(SqString s,s1 ,s2,s3,s4;建立串s=,abcdefghefghijklmrT 和串输出串DispStr(s);$ s的长度辨 s的第9伸符位置瞅审 s2=lnsStr(s,9,s1);输出串DispStr(s2);嗨串 s的第2个字符开始的 s2=DelStr(s,2,5);输出串 S2:DispStr(s2);髀 s瞬2个铺开始的 s2
12、=RepStr(s,2,5,s1);输出串 S2:DispStr(s2);提蟒 s的第2个铺开始的s3=SubStr(s,2,10);输出串 S3:DispStr(s3);将串s1和串S2籁起来胪生串si而产生用5个字瓶产生评5个字符哲毓串10个字符法般s1而产生串s4=Concat(s1 ,s2);输出串 s4:DispStr(s4);4-2include include typedef struct snodechar data;struct snode *next; LiString;void StrAssign(LiString *&s,char cstr) int i;String
13、*r,*p;s=(LiString * )malloc(sizeof(LiString);r=s; p=(LiString * )malloc(sizeof(LiString); p-data=cstri;r-next=p;r=p;r-next=NULL;void StrCopy(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
14、-data;r-next=q;r=q;p=p-next;) r-next=NULL;int StrEqual(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) return 1;elsereturn 0; int StrLength(LiString *s) int i=0;String *p=s-next;while (p!=NULL) i+; p=p-next;) ret
15、urn i;String *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-nex
16、t=q;r=q; p=p-next;) r-next=NULL; return str;LiString *SubStr(LiString *s,int i,int j) int k;LiString *str,*p=s-next5*q,*r;str=(LiString * )malloc(sizeof(LiString); str-next=NULL;r=str;if (iStrLength(s) | jStrLength(s) return str;for (k=0;knext;for (k=1;kdata=p-data;r-next=q;r=q;p=p-next;)r-next=NULL
17、;return str;)String *lnsStr(LiString *s,int i,LiString *t) int k;String *str,*p=s-next,*p1=t-nextJ*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
18、-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;return str;String *DelStr(LiString *s,int i,int j) int k;String *str,*p=s-next,*q,*r;str=(LiString * )malloc(sizeof(LiString);r=str;if (iStrLength(s) | jStr
19、Length(s) return str;for (k=0;kdata=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;return str;)String *RepStr(LiString *s,int i,intj,LiString *t)(int k;LiString *str,*p=s-next,*p1 =t-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;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;