串基本操作演示数据结构课程设计_第1页
串基本操作演示数据结构课程设计_第2页
串基本操作演示数据结构课程设计_第3页
串基本操作演示数据结构课程设计_第4页
串基本操作演示数据结构课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、攀枝花学院学生课程设计(论文)题 目: 数据结构课程设计 串基本操作演示 学生姓名: 学 号:所在院(系): 数学与计算机学院 专 业: 网络工程 班 级: 指 导 教 师: 职称: 2013年 12 月 30 日攀枝花学院教务处制课程设计(论文)指导教师成绩评定表题目名称评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题

2、,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规

3、范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日 攀枝花学院本科学生课程设计任务书题目串基本操作演示1、课程设计的目的通过本课程设计教学所要达到的目的是:培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作

4、等基本技能和科学作风方面受到比较系统和严格的训练。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)如果语言没有把串作为一个预先定义好的基本类型对待,又需要用该语言写一个涉及串操作的软件系统时,用户必须自己实现串类型。试实现串类型,并写一个串的基本操作的演示系统。基本要求:节用堆分配存储表示实现HString串类型的最小操作子集的基础上,实现串抽象数据类型的其余基本操作(不使用C语言本身提供的串函数)。参数合法性检查必须严格。利用基本操作函数构造以下系统:它是一个命令解释程序,循环往复地处理用户键入的每一条命令,直至终止程序的命令为止。3、主要参考文献1数据结构(C语言版),严蔚敏

5、,清华大学出版社,20032数据结构题集,严蔚敏,清华大学出版社,20053数据结构(C语言版),刘大有,高等教育出版社,20044Data Structure with C+,William FordWilliam Topp,清华大学出版社,20034、课程设计工作进度计划序号时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。 摘 要使用堆分配存储表示实现HString串类型的最小操作子集的基础上,实现串抽象

6、数据类型的其余基本操作,未使用C语言本身提供的串函数。参数合法。我利用了基本操作函数构造了一个命令解释程序,循环往复地处理用户键入的每一条命令,直至终止程序的命令为止的系统。关键词 数据结构,串,函数,命令目 录摘 要11 前言12 相关技术分析13 设计与实现13.1赋值13.2判相等23.3连接33.4求长度。43.5求子串53.6子串定位63.7串替换73.8显示94 源代码115 对所设计的软件进行自我评价19结 论20参 考 文 献211 前言字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2an”(n=0)。它是编程语言中表示文本的数据类型。通

7、常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。2 相关技术分析(1)赋值。格式:A 用所表示的串的值建立新串,并显示新串的内部名和串值。例:AHi!(2)判相等。格式:E若两串相等,则显示EQUAL,否则显示UNEQUAL。(3)联接。格式:C将两串拼接产生结果串,它的内部名和串值都显示出来。(4)求长度。格式:L串标识显示串的长度。(5)求子串

8、。格式:S+ 如果参数合法,则显示子串的内部名和串值。不带正负号。(6)子串定位。格式:I显示第二个串在第一个串中首次出现时的起始位置。(7)串替换。格式:R将第一个串中所有出现的第二个串用第三个串替换,显示结果串的内部名和串值,原串不变。(8)显示。格式:Pmainchushihua()caidanlan() fuzhi()paxiangdeng()qiuzichuan()lianjie()dingwei()tihuan() tuichu()图2.1 流程图3 设计与实现3.1赋值格式:A 用所表示的串的值建立新串,并显示新串的内部名和串值。例:AHi!void fuzhi() HStrin

9、g *ccc; zhengxing i=0; zifuxing chuan80,*c; coutch) free(ccc-ch); coutch=NULL; ccc-changdu=0; else ccc-ch=(zifuxing*)malloc(sizeof(zifuxing)*i+1); for(zhengxing j=0;jchj=chuanj; ccc-chi=0; ccc-changdu=i; 图3.1 赋值3.2判相等格式:E若两串相等,则显示EQUAL,否则显示UNEQUAL。void panxiangdeng() HString *chuanone,*chuantwo; cou

10、tPlease Enter The First String Identifier:; chuanone=chuanpozhengxinger(); coutch=NULL&chuantwo-ch=NULL) coutEQUALch&chuantwo-ch) if(chuanone-changdu!=chuantwo-changdu) coutUNEQUALendl; else for(zhengxing i=0;ichangdu;i+) if(chuanone-chi=chuantwo-chi) coutUNEQUALendl; return; coutEQUALendl; else cou

11、tUNEQUALendl;图3.2 判相等3.3连接格式:C将两串拼接产生结果串,它的内部名和串值都显示出来。void lianjie() HString *chuanone,*chuantwo,*chuanthree; coutPlease Enter The First String Identifier:; chuanone=chuanpozhengxinger(); coutPlease Enter The Second String Identifier:; chuantwo=chuanpozhengxinger(); coutchangdu=0&chuantwo-changdu=0

12、) if(chuanthree-ch) free(chuanthree); chuanthree-ch=NULL; chuanthree-changdu=0; else zhengxing i=0; if(chuanthree-ch) free(chuanthree); chuanthree-ch=(zifuxing *)malloc(sizeof(zifuxing)*(chuanone-changdu+chuantwo-changdu)+1); for(i=0;ichangdu;i+) chuanthree-chi=chuanone-chi; for(zhengxing j=0;jchang

13、du;j+) chuanthree-chi+=chuantwo-chj; chuanthree-chi=0; chuanthree-changdu=chuanone-changdu+chuantwo-changdu; 图3.3 连接3.4求长度。格式:L串标识显示串的长度。void qiuchangdu() HString *s; coutPlease Enter A String Identifier:; s=chuanpozhengxinger(); coutlength = changduendl;图3.4 求长度3.5求子串格式:S+ 如果参数合法,则显示子串的内部名和串值。不带正负号

14、。void qiuzichuan() HString *s; zhengxing i1=0,i2=0,biaozhi1=1,m=0; coutPlease Enter A String Identifier:; s=chuanpozhengxinger(); while (biaozhi1) couti1; couti2; if(i1i2|i1s-changdu) cout=Input Error, Please Input Again!=s-changdu) i2=s-changdu; for(zhengxing i=i1-1;ichi; m+; ch1m=0; coutThe string

15、 for the:ch1Length:i2-i1+1endl; 图3.5 求子串3.6子串定位格式:I显示第二个串在第一个串中首次出现时的起始位置。void zichuandingwei() HString *s; zhengxing m=0,i=0,j=0,n,k=0; zhengxing find=1; zifuxing ch80,*c; coutPlease Enter A String Identifier:; s=chuanpozhengxinger(); coutPlease Enter The Search String:; fflush(stdin); gets(ch); c=

16、ch; while(*c) m+; c+; for(i=0;im;i+) find=1; for(j;jchangdu&find;j+) if(s-chj=chi) n=j+1; find=0; k+; else i=0; if(k!=0) j=n-k; k=0; if(i=m & find=0) coutSubstring In The Main String Of Position:n-k+1endl; else coutThe Absence Of The Substring!endl;图3.6 子串定位3.7串替换格式:R将第一个串中所有出现的第二个串用第三个串替换,显示结果串的内部名

17、和串值,原串不变。void tihuan() HString *s;zhengxing p=0;zhengxing chuantwochangdu=p; zhengxing kk=p;zhengxing n=p;zhengxing k=p;zhengxing i=p;zhengxing j=p;zhengxing d=p;zhengxing f=p; zhengxing xunzhao=1; zhengxing xiangdeng=0,comein=0; zifuxing chuanone80;zifuxing chuanthree520,*c,*c1;zifuxing chuantwo80;

18、 coutPlease Enter A String String Identifier(); s=chuanpozhengxinger(); coutPlease Input Substring:; fflush(stdin); gets(chuanone); c=chuanone; while(*c) kk+; c+; coutPlease Input The Replace String:; fflush(stdin); gets(chuantwo); c1=chuantwo; while (*c1) chuantwochangdu+; c1+; for(i=0;ichangdu;i+)

19、 xunzhao=1; for(j;jchi=chuanonej) n=i; k+; xunzhao=0; xiangdeng=1; else j=-1; d+; xunzhao=0; xiangdeng=0; if(k!=0) i=n-k+1; k=0; if(j=kk & xiangdeng) for(zhengxing a1=f;a1cha1; p+; for(zhengxing w=0;wchuantwochangdu;w+) chuanthreep+w=chuantwow; p+=chuantwochangdu; f=i+1; j=0; d=0; k=0; comein=1; for

20、(zhengxing a1=f;a1cha1; p+; chuanthreep=0; if(!comein) coutThe Absence Of The Substring!endl; else coutAfter The Replacement String For: chuanthreeendl;图3.7 串替换3.8显示格式:Pvoid xianshi() if(chuan1.ch=NULL) couttttA endl; else cout tttA chuan1.chendl; if(chuan2.ch=NULL) couttttB endl; else cout tttB chu

21、an2.chendl; if(chuan3.ch=NULL) couttttC endl; else cout tttC chuan3.chendl; 图3.8 显示4 源代码# include # include # include # include # include using namespace std;typedef char zifuxing;typedef int zhengxing;typedef struct HSTRING zifuxing *ch; zhengxing changdu;HString;HString chuan1,chuan2,chuan3;void x

22、ianshi() if(chuan1.ch=NULL) couttttA endl; else cout tttA chuan1.chendl; if(chuan2.ch=NULL) couttttB endl; else cout tttB chuan2.chendl; if(chuan3.ch=NULL) couttttC endl; else cout tttC chuan3.chch; switch(ch) caseA:cc=&chuan1;biaozhi1=0;break; caseB:cc=&chuan2;biaozhi1=0;break; caseC:cc=&chuan3;bia

23、ozhi1=0;break; default:cout=Input Error! Please Input Again String Identifier=ch=NULL; cc-changdu=0;HString *chuanpozhengxinger() HString *cc; return biaozhi(1, cc);void fuzhi() HString *ccc; zhengxing i=0; zifuxing chuan80,*c; coutch) free(ccc-ch); coutch=NULL; ccc-changdu=0; else ccc-ch=(zifuxing*

24、)malloc(sizeof(zifuxing)*i+1); for(zhengxing j=0;jchj=chuanj; ccc-chi=0; ccc-changdu=i; void panxiangdeng() HString *chuanone,*chuantwo; coutPlease Enter The First String Identifier:; chuanone=chuanpozhengxinger(); coutch=NULL&chuantwo-ch=NULL) coutEQUALch&chuantwo-ch) if(chuanone-changdu!=chuantwo-

25、changdu) coutUNEQUALendl; else for(zhengxing i=0;ichangdu;i+) if(chuanone-chi=chuantwo-chi) coutUNEQUALendl; return; coutEQUALendl; else coutUNEQUALendl;void lianjie() HString *chuanone,*chuantwo,*chuanthree; coutPlease Enter The First String Identifier:; chuanone=chuanpozhengxinger(); coutPlease En

26、ter The Second String Identifier:; chuantwo=chuanpozhengxinger(); coutchangdu=0&chuantwo-changdu=0) if(chuanthree-ch) free(chuanthree); chuanthree-ch=NULL; chuanthree-changdu=0; else zhengxing i=0; if(chuanthree-ch) free(chuanthree); chuanthree-ch=(zifuxing *)malloc(sizeof(zifuxing)*(chuanone-changd

27、u+chuantwo-changdu)+1); for(i=0;ichangdu;i+) chuanthree-chi=chuanone-chi; for(zhengxing j=0;jchangdu;j+) chuanthree-chi+=chuantwo-chj; chuanthree-chi=0; chuanthree-changdu=chuanone-changdu+chuantwo-changdu; void qiuchangdu() HString *s; coutPlease Enter A String Identifier:; s=chuanpozhengxinger();

28、coutlength = changduendl;void qiuzichuan() HString *s; zhengxing i1=0,i2=0,biaozhi1=1,m=0; coutPlease Enter A String Identifier:; s=chuanpozhengxinger(); while (biaozhi1) couti1; couti2; if(i1i2|i1s-changdu) cout=Input Error, Please Input Again!=s-changdu) i2=s-changdu; for(zhengxing i=i1-1;ichi; m+

29、; ch1m=0; coutThe string for the:ch1Length:i2-i1+1endl; void zichuandingwei();void tihuan();void caidan()chushihua(&chuan1); chushihua(&chuan2); chushihua(&chuan3); zifuxing w,ch; zhengxing biaozhi1=1,biaozhi2=1; while(biaozhi2)cout * endl A.赋值(Assignment) endl E.判相等(Sentenced to equal) endl C.连接(Co

30、nnect) endl L.求长度(The length of) endl S.求子串(Substr) endl I.子串定位(Substring positioning) endl R.串替换(String replacement) endl P.显示(Display) endl Q.退出(Quit) endl * endl endl;cout w; switch(w) caseA: fuzhi();biaozhi1=0;break; caseE: panxiangdeng();biaozhi1=0;break; caseC: lianjie();biaozhi1=0;break; case

31、L: qiuchangdu();biaozhi1=0;break; caseS: qiuzichuan();biaozhi1=0;break; caseI: zichuandingwei();biaozhi1=0;break; caseR: tihuan();biaozhi1=0;break; caseP: xianshi();biaozhi1=0;break; caseQ: coutGOODBYE!endl;exit(0);biaozhi1=0;break; default: cout=Input Error! Please Input Again=; coutch; if(ch=Y) bi

32、aozhi1=1; biaozhi2=1; system(cls); void zichuandingwei() HString *s; zhengxing m=0,i=0,j=0,n,k=0; zhengxing find=1; zifuxing ch80,*c; coutPlease Enter A String Identifier:; s=chuanpozhengxinger(); coutPlease Enter The Search String:; fflush(stdin); gets(ch); c=ch; while(*c) m+; c+; for(i=0;im;i+) find=1; for(j;jchangdu&find;j+) if(s-chj=chi) n=j+1; find=0; k+; else i=0; if(k!=0) j=n-k; k=0; if(i=m & find=0)

温馨提示

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

评论

0/150

提交评论