2023年数据结构实验报告链串.docx

上传人:太** 文档编号:72846781 上传时间:2023-02-13 格式:DOCX 页数:12 大小:23KB
返回 下载 相关 举报
2023年数据结构实验报告链串.docx_第1页
第1页 / 共12页
2023年数据结构实验报告链串.docx_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《2023年数据结构实验报告链串.docx》由会员分享,可在线阅读,更多相关《2023年数据结构实验报告链串.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、宁波工程学院电信学院计算机教研室实验报告课程名称:数据结构姓 名:_学 号:实验项目:链串的基本算法班级:计科102指导教师:H 期:20 2 3/1 0 /1 3实验位置:电子楼二楼机房一、实验目的1)熟悉串的定义和串的基本操作。2)掌握链串的基本运算。3 )加深对串数据结构的理解,逐步培养解决实际问题的编程能力。二、实验环境装有V i sualC+6.0的计算机。三、实验内容编写一个程序,实现链串的各种基本运算,并在此基础上设计一个主程序。具体如下:编写栈的基本操作函数字符串删除lis t ring * d elstr ( 1 i s t r i ng *s,in t i,int j) A

2、nt k ;lis t r i ng *s t r, *p=s-n ext ,*q,*r;s tr= (li s tri ng *)ma 1 loc(s i z e o f (listr i ng);s t r -next=NULL;”=str;i f( i st r leng t h(s) llj s tr 1 e n g t h( s ) o retu r n st r ;f or( k =0;k d a t a=pd a ta;r - n e x t=q;g r =q;p=p-n e xt;)for (k=0; k ncxt;whi 1 e(p!=N ULL ) q = (listr i

3、 ng *)mallo c (size o f (listring);q- data =pd a ta;arnext= q ;”二q;p=p-n ext;rn e xt=NUL L ;盯 e t urn str;)/字符串替换1 i stri n g * r eps t r(listr i ng *s,int i, int j, li s tr i n g *t)i n t k ;1 i string *str,*p = s n e xt,* p I=t-ne x t,*q, *r;str= (listring *)mall o c ( s i z e o f ( 1 istring);st

4、r - n e x t=NULL;r=str;if (istrlengt h (s)|jst r 1 ength(s)are turn str;o r(k=0; kdata=p-d ata;时next=q;p=p-next;0)for( k =0; k next;while ( p 1!=NUL L)q= (listr i ng *)ma 1 loc(sizeof( 1 i stri ng);q- d a t a=pl- d ata;n ext= q ;r=q;p 1 =pl-next;whil e (p!=NU LL) o q = (listring *)mallo c (siz e o f

5、 ( 1 istrin g );q-d a ta= p -d a t a ;or- n e x t= q ; r=q;p=p-n ext;)r-next= NULL;retur n str;字符串输出void d i s pstr(listring *s)。1 i string *p = s-ne x t;owhil e ( p !=NULL)(opri n t f (% c ,p -data);op=p-n ext;)oprintf (nnH);)判断字符串是否为空void emps t r (lis t ring *s) o i f (s-next=NULL)。printf(字符串是空的!

6、 ”);elseoprintf(字符串不为空广);)v oid initstr( 1 is t r i ng *& s ) s =(is t ri ng *)ma 1 loc( size of(l i str i ng); s- next =NU LL;)主函数i n t main(v o id) 1 i s tri n g * s *tl, *s2,* s 3,*s4, *s 5 ,* s 6;i ntl;st r a s sign(s,nabcdefg h ij k I m n *);s t r as s i g n(s 1 , H xyz);stra s sign (t, hijk );

7、strc o py(t 1, t);p r intf(输出 tl 的长度:%dn ,str 1 ength (tl);s 2 = i n s s t r ( s ,9, s 1);printf(输出 s2: n );disp s tr(s2);s 3 = dels t r (s, 2, 5 );pr i ntf (输出 s3: n );d i spst r (s3);s4=repst r (s, 2, 3,si);p r in t f (输出 s 4:nn);disps t r (s4 );s 5 =subst r (s, 8 ,4);p rintf (输出 s5:n );dispstr(s5

8、);s 6 =con c at (si, t);printf (输出 s6:nM);Mi s ps t r (s6);1 = s t r e qual(sl,s5);。i f (1= 1 )pri n tf( si 与 s5 相等!)pr i n tf( n s 1 与 s5 不相等! ”);e turn 0;)运营结果:D: 链串Debug俅串.exe“输出S2:abcdefghxyzijklnn输业3:aghijklmn输出s4:axyzefghijklnn输出s5:hijk输出s6:xyzhijksi与s5不相等?Piess any key to continue四、实验心得与小结这次上

9、机的内容是实现链串的基本算法,跟前面学的链表的基本算法是差不 多的,所以这次实验还是比较简朴的,但也曾出现过一点点小问题,直接把字符 串赋值给指针 s= a b cdefghijklmn; s 1= * xyz; t=hi j k”;结果出现如下 错误:error C2440:=:cannotconuertfromchar15* to struct snode *error C244G:=:cannotconuertfromchar,to struct snode 头error C244G:=:cannotconuertFromchar5to struct snode *通过调用函数 void

10、 s t ras s ign (list r i ng *&s, charc s t r )将其订 正为 s tr a s sign(s,ab c d efghijk 1 m n ); s trassign(sl,xyz ); st r a ssign(t,n h ij k );后没有错误;编译、组建都没有错误的情况下,s2是在串s的第9个字符位置插入串si而产生的,木应出现的结果为abcdefghxyzijklnn可运营时却出现如下的结果abcdefghiiiijklnn查找了因素之后才发现在插入s 1数据时,都把s的第九个字母的数据赋值给了 s2, *pl=sl-next; q - d a

11、 t a = p - d a t a ;把错误改为q-data=pl-dala;后运营对的。虽然链串的基本算法的操作还是比较简朴,但也会犯一些毛病,必须通 过上机编译调试才干发现,上机之后才干把自认为对的代码重新纠正过来,从 而有所进步。通过这次的上机实验,我熟悉了串的定义和串的基本操作,掌握了链串的 基本运算,加深对串数据结构的理解并逐步培养解决实际问题的编程能力。五、指导教师评议成绩评估:成绩评估:g指导教师署名:。链串类型定义如卜.所示:t y p e d e f s t r u ct s no d ech a r data;ast r u c t s n ode *ne x t ;li

12、 s t r ing;(1)串赋值 Assign ( s , t )将一个字符串常量赋给串s,即生成一个其值等于I的串s(2)串复制 StrCopy(s,t)将串t赋给串s(3 )计算串长度StrLen g t h ( s )返回串s中字符个数(4)判断串相等 Str E q u al(s,t)若两个串s与t相等则返回1;否则返回0。(5)串连接 Con c at( s , t)返回由两个串s和I连接在一起形成的新串。(6)求子串 Sub S tr(s, i ,j)返回串s中从第i(l WiWStrLength(s)个字符开始的、由连 续j个字符组成的子串。(7)插入 InsStr (s, i

13、 , t )将串t插入到串s的第i (1 WiWSlrLength(s)+l )个字符 中,即将t的第一个字符作为s的第i个字符,并返回产生的新串(8)串删除 D e 1 Str ( s ,i,j)从串S中删去从第i(iw i WStrLengih(s)个字符开始的长度 为j的子串,并返回产生的新串。(9)串替换 R epStr (s,sl,s2 )在串s中,将所有出现的子串si均替换成s2。(10)输出串 DispStr( s )输出串s的所有元素值(11)判断串是否为空IsEm p ty( s )编写主函数调用上述函数实现下列操作:(1) 建立串 s= ab c defg h i jk I

14、mn,串 si = xyz,串 t= h i jk”(2) 复制串t到11,并输出tl的长度(3)在串s的第9个字符位置插入串s 1而产生串s 2,并输出s2(4)删除s第2个字符开始的5个字符而产生串s3,并输出s 3(5) 将串s第2个字符开始的3个字符替换成串si而产生串s4,并输出s4(6) 提取串s的第8个字符开始的4个字符而产生串s5,并输出s5(7) 将串si和串t连接起来而产生串s6,并输出s6(8) 比较串si和s 5是否相等,输出结果程序清单:#in c 1 ude#i n c ludet yp e d e f struct s n odeoc h ar data;st r

15、 u c t snode * n ext;li s t r i n g;/ /字符串赋值void s t r a ssig n ( 1 istring *&s,char c s t r) int i;li s t ring * r, * p ;0s=(l i s t ring *) mal 1 o c(siz e of( 1 is t rin g );。r =s;for ( i =0; cstr i! = 0 ; i+) o p=(l i st r i ng *)m a 1 loc(s i ze o f(lis t r ing); p -data=cstri;r - n ext=p;r= P

16、;)r-ncxt=N U LL;字符串复制void s t r c opy(l i stri n g *& s ,1 i str i ng * t)N i str i ng *p= t -ne x t,*q *r;s= (li s tring * )m a 1 1 oc ( s ize o f(lis t r i n g );wh i le(p!=NULL)q=(listri ng*) mall o c (sizeof( 1 i stri ng);q-d a ta=pdata;。r -nex t =q;p=p-next;r -ne x t=N U LL;/字符串长度i n t s tri e

17、ng t h(l i str i ng 夫 s) int i=0;listr i n g * p =s-nex t ;wh i le( p !=NU L L ) 8i+ + ;p=p-next;ret u rn/判断字符串是否相等 int s t requ a l(li s t ri n g *s, 1 i s t rin g *t)1 i s tr i n g *p= s -ne x t, * q= t -n e xt;while (p! =NULL&q ! =NULL& p -data=q-d a ta) p=p-next;oq= q n ext;)Mf( p =NU L L&q=NULL

18、)。 ret u rn 1 ;e Ise“ r eturn 0;字符串连接1 i string *co n cat (listring *s,lis t r i n g *t) lis t ri n g *str, *p = s-ne x t,*q,*r;s t r=( 1 i s tr i ng * )ma 1 I o c(si z e of(list r i n g ); r=str;owhile ( p !=NULL) q= (listr i ng *)mallo c (si z cof(list r i n g);qd a t a=pdat a ;r -ne x t=q;p = p -

19、 n ext;0叩二 t ne x t;while(p!=NUL L) 。 q = (listring *)m a 1 1 o c ( s izeof ( 1 ist r in g );q -data=p-dat a ;。 r-next=q;g r = q ;p=p-n e xt;)r next=NULL;。r eturn str;)字符串的子串listr i ng *substr(l i st r in g * s , int i, int j)fiint k;i i str i ng *str,*p= s -ne x t, * q ,*r;str=(list r ing *) m a 1

20、1 oc( s i zeo f ( 1 ist r ing);s t r- n ex t = N U L L;r=str;if(istrlength(s)| I j s tri e ngth( s )return str;ofor(k=0;knex t ;of o r( k = 1 ;k d a ta=p- d ata;o r -next=q; r=q;p= p - n ext;0)0r-ne x t 二NULL;return str;/字符串插入listring *inss t r( 1 i string * s ,int i, listr i n g * t )int k;listr i

21、n g *str,*p=s-n e xt,*pl=t-next,*q,*r;0s t r=(lis t r i ng *) m a 1 1 o c(si z eof ( 1 i s trin g );str-next=NULL;r= s t r ;Nf (ist r 1 e n g th(s)+1)re t urn str;af o r(k=l; k data= p - d a ta;3r- n e x t =q ;。 r= q ;p=p-nex t ;)w h ile( p 1 ! =NULL) g q =( 1 is t r in g *)malloc( s iz e of ( li s trin g );oqd a t a=pl-d a ta;ornext=q;r二 q;pl=pl-next:owhile ( p ! =N ULL) 叫二(1 i string *)mal 1 oc(siz e o f ( 1 i s tri n g);叫-(1 a t a =p-d ata;or n e x t=q; r=q;p=p-n e xt;r - n ext=NULL; r etu r n str;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁