数据结构实验5-串子系统设计_第1页
数据结构实验5-串子系统设计_第2页
数据结构实验5-串子系统设计_第3页
数据结构实验5-串子系统设计_第4页
数据结构实验5-串子系统设计_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./验证性实验5:串子系统班级学号姓名胡德文1.实验目的〔1掌握串的特点及顺序定长存储的方式。〔2掌握串的创建、连接、插入、删除、显示等操作。〔3掌握串的查找、取子字符串、比较串大小的操作〔4掌握模式匹配的基本思想及其算法。2.实验内容〔1由用户通过键盘输入建立一个字符串。〔2编写插入、删除、查找、比较、取子字符串、连接字符串、显示、模式匹配等程序。〔3设计一个选择式菜单,以菜单方式选择上述操作。串子系统 ******************************************** *1输入字串* *2连接字串* *3取出子串* *4删除子串* *5插入子串* *6查找子串* *7比较串大小* *8显示字串* *0返回* ********************************************请输入菜单选项〔0--8:实验程序#include<stdio.h>#defineSTRINGMAX100typedefstruct{charvec[STRINGMAX];intlen;}str;voidConcatStr<str*r1,str*r2>{inti;printf<"\n\t\tr1=%sr2=%s\n",r1->vec,r2->vec>;if<r1->len+r2->len>STRINGMAX>printf<"\n\n\t两个串太长,溢出!\n">;else{for<i=0;i<r2->len;i++>r1->vec[r1->len+i]=r2->vec[i];r1->vec[r1->len+i]='0';r1->len=r1->len+r2->len;}}voidSubStr<str*r,inti,intj>{intk;stra;str*r1=&a;if<i+j-1>r->len>{printf<"\n\t\t子串超界!\n">;return;}else{for<k=0;k<j;k++>r1->vec[k]=r->vec[i+k-1];r1->len=j;r1->vec[r1->len]='\0';}printf<"\n\t\t取出字符为:">;puts<r1->vec>;}voidDelStr<str*r,inti,intj>{intk;if<i+j-1>r->len>printf<"\n\t\t所要删除的子串超界!\n">;else{for<k=i+j;k<r->len;k++,i++>r->vec[i]=r->vec[k];r->len=r->len-j;r->vec[r->len]='\0';}}str*InsStr<str*r,str*r1,inti>{intk;if<i>=r->len||r->len+r1->len>STRINGMAX>printf<"\n\t\t不能插入!\n">;else{for<k=r->len-1;k>=i;k-->r->vec[r1->len+k]=r->vec[k];for<k=0;k<r1->len;k++>r->vec[i+k]=r1->vec[k];r->len=r->len+r1->len;r->vec[r->len]='\0';}returnr;}intIndexStr<str*r,str*r1>{inti,j,k;for<i=0;r->vec[i];i++>for<j=i,k=0;r->vec[j]==r1->vec[k];j++,k++>if<!r1->vec[k+1]>returni;return-1;}intLenStr<str*r>{inti=0;while<r->vec[i]!='\0'>i++;returni;}str*CreateStr<str*r>{gets<r->vec>;r->len=LenStr<r>;returnr;}intEqualStr<str*r1,str*r2>{for<inti=0;r1->vec[i]&&r2->vec[i]&&r1->vec[i]==r2->vec[i];i++>;returnr1->vec[i]-r2->vec[i];}voidmain<>{stra,b,c,d;str*r=&a,*r1;r->vec[0]='\0';charchoice,p;inti,j,ch=1;while<ch!=0> { printf<"\n">; printf<"\n\t\t串子系统">; printf<"\n\t\t*********************************************">; printf<"\n\t\t*1输入字串*">; printf<"\n\t\t*2连接字串*">; printf<"\n\t\t*3取出子串*">; printf<"\n\t\t*4删除子串*">; printf<"\n\t\t*5插入子串*">; printf<"\n\t\t*6查找子串*">; printf<"\n\t\t*7比较串大小*">; printf<"\n\t\t*8显示字串*">; printf<"\n\t\t*0返回*">; printf<"\n\t\t*********************************************">; printf<"\n\t\t请选择菜单号<0--8>:">;scanf<"%c",&choice>;getchar<>;if<choice=='1'>{printf<"\n\t\t请输入一个字符串:">;gets<r->vec>;r->len=LenStr<r>;}elseif<choice=='2'>{printf<"\n\t\t请输入所要连接的串:">;r1=CreateStr<&b>;ConcatStr<r,r1>;printf<"\n\t\t连接以后的新串值为:">;puts<r->vec>;}elseif<choice=='3'>{printf<"\n\t\t请输入从第几个字符开始:">;scanf<"%d",&i>;getchar<>;printf<"\n\t\t请输入取出的连续字符数:">;scanf<"%d",&j>;getchar<>;SubStr<r,i,j>;}elseif<choice=='4'>{printf<"\n\t\t请输入从第几个字符开始:">;scanf<"%d",&i>;getchar<>;printf<"\n\t\t请输入删除的连续字符数:">;scanf<"%d",&j>;getchar<>;DelStr<r,i-1,j>;}elseif<choice=='5'>{ printf<"\n\t\t请输入在第几个字符前插入:">; scanf<"%d",&i>; getchar<>; printf<"\n\t\t请输入所要插入的字符串:">; r1=CreateStr<&b>; InsStr<r,r1,i-1>;}elseif<choice=='6'>{ printf<"\n\t\t请输入所要查找的字符串:">; r1=CreateStr<&b>; i=IndexStr<r,r1>; if<i!=-1> printf<"\n\t\t第一次出现的位置是第%d个.\n",i+1>; else printf<"\n\t\t该字串不在其中!\n">;}elseif<choice=='7'>{ printf<"\n\t\t请输入第一个串:">; gets<c.vec>; printf<"\n\t\t请输入第二个串:">; gets<d.vec>; intk=EqualStr<&c,&d>;if<k>0>printf<"\n\t\t第一个串大!\n">;elseif<k<0>printf<"\n\t\t第二个串大!\n">;elseprintf<"\n\t\t两个串一样大!\n">;}elseif<choice=='8'>{printf<"\n\t\t该串值为:">;if<r->vec[0]=='\0'>printf<"空!\n">;elseputs<r->vec>;}elseif<choice=='0'>break;elseprintf<"\n\t\t请注意:输入有误!\n">;if<choice!='X'&&choice!='X'>{printf<"\n\t\t按[Enter]键继续,按任意键返回主菜单.">;p=getchar<>;if<p!='\xA'>{getchar<>;break;}}}}4.程序运行实验小结本章要求我们掌握的是字符串的创建、连接、删除、显示、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论