串的基本操作的编程实现_第1页
串的基本操作的编程实现_第2页
串的基本操作的编程实现_第3页
串的基本操作的编程实现_第4页
串的基本操作的编程实现_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

串的基本操作的编程实现数据结构双语班DATASTRUCTUREBILINGUAL-TEACHINGCLASS实验报告003批改单ExperimentReportCommendatoryBill指导老师评语COMMENDATORYOFTHETEACHER签字:串基本操作的编程实现2006-2007(2)学期T523-1班学号:33姓名:王娟指导老师:马春江时间:2007.04.19【实验目的】内容:串基本操作的编程实现要求:串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现,用菜单进行管理。也鼓励学生利用基本操作进行一些应用的程序设计。【实验性质】验证性实验(学时数:2H)【实验内容】可以只完成基本的功能演示程序。也可以通过一个较为实用的系统下体现各种操作的作用,如可以开发一个文本统计程序,要求如下:编写程序,进行字符串统计系统的设计 cout<<"空串"<<endl; else {for(inti=0;i<s->len;i++) { cout<<s->ch[i]; }cout<<endl;}}voidcreate(strtype*s)//将普通字符串赋给串{ charb,string[Maxlen]=""; intk=0; cout<<"请输入一个字符串(以#结束)"<<endl;for(;;) { cin>>b; if(b=='#')break; string[k]=b; k++; } char*str=string; strcpy(s->ch,str); s->len=strlen(str);}intlength(strtype*s)//求串的长度{ returns->len;}voidcopy(strtype*s1,strtype*s2)//串的复制{ inti; for(i=0;i<s1->len;i++) s2->ch[i]=s1->ch[i]; s2->len=s1->len; s2->ch[s2->len]='\0';//添加字符串结束符}voidsubs(strtype*s,intpos,intn)//求子串{ inti; strtypess; strtype*sub=&ss; if(pos+n-1>length(s))//参数不正确 cout<<"子串过长!"; else { for(i=pos-1;i<pos+n-1;i++) sub->ch[i-pos+1]=s->ch[i]; sub->len=n; sub->ch[sub->len]='\0'; disp(sub); }}intconcat(strtype*s,strtype*t)//连接两个串{ inti; if((s->len+t->len)>Maxlen) { cout<<"连接失败!"<<endl; return0; } for(i=0;i<t->len;i++) s->ch[i+s->len]=t->ch[i]; s->len=s->len+t->len; s->ch[s->len]='\0'; disp(s); cout<<"连接成功!"<<endl; return1;}intins(strtype*s,strtype*t,inti)//插入一个子串{ intj; if(s->len+t->len>Maxlen) return0; for(j=s->len-1;j>=i-1;j--)//i之后的所有元素后移t->len个位置 s->ch[j+t->len]=s->ch[j]; for(j=0;j<t->len;j++) s->ch[j+i-1]=t->ch[j]; s->len=s->len+t->len; s->ch[s->len]='\0'; return1;}strtypereplace(strtype*s1,strtype*s2,inti,intj)//串的等长替换{ strtypes; intn,k; if(i+j-1<s1->len) { for(n=0;n<i-1;n++) s.ch[n]=s1->ch[n]; for(n=0;n<s2->len;n++) s.ch[i+n-1]=s2->ch[n]; s.len=i+s2->len-1; for(n=s.len,k=i+j-1;k<s1->len;n++,k++) s.ch[n]=s1->ch[k]; s.len=n; s.ch[s.len]='\0'; s1=&s; disp(s1); } else { s.ch[0]='\0'; s.len=0; } returns;}intdel(strtype*s,intpos,intn)//删除一个子串{ inti; if(pos+n>s->len) {cout<<"长度过长,删除失败!"<<endl;return0;} for(i=pos+n-1;i<s->len;i++) s->ch[i-n]=s->ch[i]; s->len=s->len-n; s->ch[s->len]='\0'; return1;}///////////////////////////////////////////////////////////////////////////////////////////////////////////////菜单///////////////////////////////////////////voidmenu(){ char*p[]={"", "", "", "", "", "┏━━┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳━━┓", "┃^_^┠数┨┠据┨┠结┨┠构┨┠程┨┠序┨┠设┨┠计┨^_^┃", "┃┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┃", "┣━━━━━━━━任意进制数据的相互转换━━━━━━━━━┫", "┃程序功能:┃", "┃┃", "┃本程序实现字符串的基本操作。┃", "┃┃", "┃0.退出程序。(按其他键继续)┃", "┃┃", "┃┃", "┃┃", "┃OO════∩════OO指导老师:马春江┃", "┃湖北汽车工业学院作者:王娟┃", "┃▁╭▅▆▇□□█▇▆▅▄▃▂▁(╳)█╮QQ:550361098┃", "┃╰═▃_电气工程系∠════▔▔▔┃", "┃*:-.,,.-:*``*:-.,,.-:*``*:-.,,.-:*``*:-.,,.-:*,,┃", "┃╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮*:-.,,.-:*,、☆*:-.,┃", "┃║双║║语║║班║║天║║地║★*:-.,┃", "┃└﹏┘└﹏┘└﹏┘└﹏┘└﹏┘┃", "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" }; inti,j; for(i=20;i>=0;i--) { system("cls"); for(j=i;j<=25;j++) { cout<<"\t"<<p[j]<<endl; } Sleep(150); }}voidmenu2(){ char*p[]={"┏━━┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳━━┓", "┃^_^┠数┨┠据┨┠结┨┠构┨┠程┨┠序┨┠设┨┠计┨^_^┃", "┃┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┃", "┣━━━━━━━━字符串的基本操作实现━━━━━━━━━┫", "┃程序功能:┃", "┃┃", "┃本程序实现字符串的基本操作┃", "┃┃", "┃0.退出程序。(按其他键继续)┃", "┃1.清屏┃", "┃2.求串的长度┃", "┃3.串的复制┃", "┃4.求子串┃", "┃5.连接两个串┃", "┃6.串的插入操作┃", "┃7.串的等长替换┃", "┃8.串的删除操作┃", "┃9.输出一个串┃","┃┃", "┃┃", "┃OO════∩════OO指导老师:马春江┃", "┃湖北汽车工业学院作者:王娟┃", "┃▁╭▅▆▇□□█▇▆▅▄▃▂▁(╳)█╮QQ:550361098┃", "┃╰═▃_电气工程系∠════▔▔▔┃", "┃*:-.,,.-:*``*:-.,,.-:*``*:-.,,.-:*``*:-.,,.-:*,,┃", "┃╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮*:-.,,.-:*,、☆*:-.,┃", "┃║双║║语║║班║║天║║地║★*:-.,┃", "┃└﹏┘└﹏┘└﹏┘└﹏┘└﹏┘┃", "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" }; inti; system("cls"); for(i=0;i<=28;i++) { cout<<"\t"<<p[i]<<endl; }}////////////////////////////////////////////////////////////////////////////////////////////////////////////main//////////////////////////////////////////////////voidmain(){ menu(); strtypet1,t2; strtype*s1=&t1,*s2=&t2; charch,str1[Maxlen]="",str2[Maxlen]=""; inti,j=0,k=0,n,pos; cin>>ch; if(ch=='0')exit(0); menu2(); char*str01=str1,*str02=str2; cout<<"字符串的赋初值"<<endl;create(s1); disp(s1); cout<<endl<<"赋初值成功"<<endl; for(;;) { cout<<endl<<"请选择:"; cin>>ch; switch(ch) { case'0': exit(0); case'1': system("cls");menu2();break; case'2': cout<<"求串的长度"<<endl;cout<<"长度是:"<<length(s1); break; case'3': cout<<"串的复制"<<endl;copy(s1,s2); disp(s2); cout<<"复制成功!"<<endl; break;case'4': cout<<"求子串"<<endl; cout<<"输入位置"<<endl; cin>>pos; cout<<"输入长度"<<endl; cin>>n;subs(s1,pos,n);break; case'5': cout<<"两个串的连接"<<endl; create(s2); disp(s1); disp(s2); concat(s1,s2);

温馨提示

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

评论

0/150

提交评论