网络工程专业—数据结构课程设计报告(伪码).doc

上传人:仙人指路1688 文档编号:2396861 上传时间:2023-02-17 格式:DOC 页数:24 大小:262KB
返回 下载 相关 举报
网络工程专业—数据结构课程设计报告(伪码).doc_第1页
第1页 / 共24页
网络工程专业—数据结构课程设计报告(伪码).doc_第2页
第2页 / 共24页
网络工程专业—数据结构课程设计报告(伪码).doc_第3页
第3页 / 共24页
网络工程专业—数据结构课程设计报告(伪码).doc_第4页
第4页 / 共24页
网络工程专业—数据结构课程设计报告(伪码).doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《网络工程专业—数据结构课程设计报告(伪码).doc》由会员分享,可在线阅读,更多相关《网络工程专业—数据结构课程设计报告(伪码).doc(24页珍藏版)》请在三一办公上搜索。

1、数据结构课程设计报告 题目:串基本操作的演示 学 院 计算机学院 专 业 网络工程 年级班别 学 号 学生姓名 指导教师 成 绩 _2012年6月题目:串基本操作的演示一 需求分析1. 定义自定义的串类型,并使用此类型实现串的基本操作演示。2. 利用堆分配存储表示实现HString串类型的最小操作子集的基础,实现串抽象数据类型的其余基本操作。3. 严格检查参数的合法性4. 构造命令解释程序,循环往复处理用户输入的每一条命令,有程序终止命令5. 需要实现的基本操作:(1)赋值 (2)判相等 (3)联接 (4)求长度 (5)求子串(6)子串定位 (7)串替换 (8)显示 (9)删除 (10)退出

2、测试数据:必要数据(1)E “ ”,应显示”EQUAL”. (2)E abcabcd,应显示UNEQUAL. (3)C “ “,应显示”. (4) I a”,应报告:参数非法. (5)R aaaaab,应显示ba. (6)R aaabc aaab,应显示aabaabaabbc. (7)R aaaaaaaaaaaaab,应显示abab. 自定义数据: (8)Astring,应显示:“语法格式错误!请重新输入!” (9)A string,应显示:内部名string. (10)A ,应显示:内部名 . (10)Lstring,应显示:”命令语法格式错误!请重新输入!” (11)L string,应显

3、示: 6. (12)L ,应显示: 0. (13)D123,应显示:“命令语法错误!内部名不能小于0和大于100和只能为数字!” (14)Ds,应显示:“内部名只能输入数字!请重新输入!” (15)D99,应显示:“此内部名为空!请重新输入!” (16)D2,应显示:“命令语法格式错误!请重新输入!” (17)D 2,应显示:删除成功. (18)Sstring,应显示:“命令语法格式错误!请重新输入!” (19)S string2 3,应显示:tr. (20)S string5 7应显示:start不能小于0或大于字符串的长度。end不能小于start且不能大于字符串的长度。 (21)Cstr

4、ing,应显示:“命令语法格式错误!请重新输入!” (22)C string,应显示:string. (23)C str应显示:str。 (24)Istring,应显示:“命令语法格式错误!请重新输入!” (25)I stringing,应显示: 4.二 概要设计1. 定义HString串抽象数据类型ADT StrHeadList 数据对象: D ai | aiElemSet, i=1,2,.,n, n0 数据关系:R1 |ai-1, aiD, i=2,.,n 基本操作:void GetCommand(char c,StrHeadList &headlist,ResultType &resul

5、type)初始条件:c不为空,headlist存在,resultype存在操作结果: 得到命令的对应整数值。void Assignment(StrHeadList headlist,ResultType resultype,int &pointcheck)初始条件:headlist存在,resultype存在。操作结果:存储输入的字符串,并显示其内部名和串值。void Equal(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始条件 : headlist存在,resultype存在。 操作结果:报告输入的两字符串是否相等

6、。void Connect(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始条件 : headlist存在,resultype存在。 操作结果 :联接输入的两字符串,并显示联接后的字符串。void Length(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始条件 : headlist存在,resultype存在。 操作结果:显示输入的字符串的长度。void Substring(StrHeadList headlist,ResultType res

7、ultype,int start,int end) 初始条件 : headlist存在,resultype存在。 操作结果:显示主串中长度为end-start的子串。void SbsLocation(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始条件 : headlist存在,resultype存在。 操作结果:显示子串在主串第一次出现的位置。void Replace(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始条件 : headlist存在

8、,resultype存在。 操作结果:用第二子串替换主串中出现的第一子串,并显示替换后的主串 void Show(StrHeadList headlist,ResultType resultype,int &pointcheck,int k) 初始条件 : headlist存在,resultype存在。 操作结果:显示表内所有的字符串的内部名和串值。void Delete(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始条件 : headlist存在,resultype存在。 操作结果:删除指定内部名的字符串。void

9、End(StrHeadList headlist,ResultType resultype,int &pointcheck,int k) 初始条件 : headlist存在,resultype存在 操作结果:结束程序。2. 命令分析抽象数据类型ADT ResultType数据对象: D ai | aiElemSet, i=1,2,.,n, n0 数据关系:R1 |ai-1, aiD, i=2,.,n 变量:int CmdNo 操作结果:存储命令对应的整数值。 int s3操作结果:存储输入的子串的内部名。 3基本类型抽象数据类型ADT HString 数据对象: D ai | aiElemSe

10、t, i=1,2,.,n, n0 数据关系:R1 |ai-1, aiD, i=2,.,n 变量:char *ch操作结果:字符串基址。 int length 操作结果 :存储字符串的长度.4.主程序void main() 初始化; 命令格式和使用格式说明列表; 命令分析函数调用 ab(headlist,resultype); 5.本程序模块的调用关系本程序只有两个模块 主程序模块 包涵各函数的模块三 详细设计1. 主程序需要的全程量#define SIZE 30 /字符串的分配空间#define true 1 /常量typedef struct /串表头定义HString StrHead100

11、; /字符串指针数组StrHeadList; /串表头类型2.字符串类型typedef struct /字符串类型定义char *ch; /字符串存储基址int length; /字符串的长度HString; typedef struct/命令存储类型定义int CmdNo; /存储命令的变量int s3; /存储输入的字符串的下标的数组ResultType;void GetCommand(char c,StrHeadList &headlist,ResultType &resultype)/判断由c存储的字符,把与之对应的命令的值赋予resultype的CmdNo中void Assignme

12、nt(StrHeadList headlist,ResultType resultype,int &pointcheck)/从headlist中StrHead100查找还没开辟空间的串头指针,然后开辟空间存储/用户输入的字符串。void Equal(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist中存储用户输入的两个字符串,再进行比较,如果相等显示EQUAL,/如果不相等显示UNEQUAL。void Connect(StrHeadList headlist,ResultType resultype,int

13、&pointcheck)/存储用户输入的两个字符串,然后将第二个字符串联接到第一个字符后面并存储/在headlist中,显示联接后的字符串的串值。void Length(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist中存储用户输入的一个字符串,然后显示字符串的长度。void Substring(StrHeadList headlist,ResultType resultype,int start,int end)/在headlist中存储用户输入的一个字符串,并用start、end接受用户需要获得的/子串

14、的开始位置和结束位置。void SbsLocation(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist中存储用户输入的两个字符串,显示第二个字符串在第一个字符串的/第一次出现的位置。void Replace(StrHeadList headlist,ResultType resultype,int &pointcheck)/存储用户输入的三个字符串,在第一个字符串中查找与第二个字符串相等的子串/并用第三个字符串替换之,显示替换后的字符串。void Show(StrHeadList headlist,Res

15、ultType resultype,int &pointcheck,int k)/resultype接受命令CmdNo,显示headlist所有存储的字符串。void Delete(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist存储用户输入的内部名,将字符串内部名转换为整数类型,/删除对应内部名的字符串,若此内部名字符串不存在,则显示不存在,否则/显示删除成功。void End(StrHeadList headlist,ResultType resultype,int &pointcheck,int k)

16、/分析命令,结束程序的运行。void ab(StrHeadList &headlist,ResultType &resultype)/分析用户输入的命令,存储用户输入的字符串,并调用相应的命令函数。其中操作的算法如下:1.void ab(StrHeadList &headlist,ResultType &resultype)/主函数定义for(;c!=n;) c=getchar();/从屏幕读取一个字符if(check=0) GetCommand(c,headlist,resultype);/调用命令匹配函数check=1;/check赋值为1,限制只调用一次命令匹配函数 if(c=&star

17、t=1)/如果字符串输入结束 start=0;headlist.StrHeadi.length=length; /获得字符串长度headlist.StrHeadi.chlength=0;/字符串结束符length=0; /变量length置为0 resultype.sj=i;/记录输入的字符串的内部名j+; pointcheck+=1; /用于命令语法判断continue; /结束循环 if(c=)&start=0)/如果字符串读取开始 pointcheck+=1;start=1; while(headlist.StrHeadi.ch)/寻找还没分配的串指针的下标 i+; if(start=1

18、) if(!headlist.StrHeadi.ch)/如果未分配存储空间headlist.StrHeadi.ch=(char *)malloc(SIZE*sizeof(char);if(c!=)/如果读取的字符串不为headlist.StrHeadi.chlength=c;/存储字符headlist.StrHeadi.length+; /字符长度自增length+;k+;/用于命令语法判断switch(resultype.CmdNo)/选择对应命令的对应函数 case 1:Assignment(headlist,resultype,pointcheck);break; case 2:Equa

19、l(headlist,resultype,pointcheck);break; case 3:Connect(headlist,resultype,pointcheck);break; case 4:Length(headlist,resultype,pointcheck); case 5:Substring(headlist,resultype,pointcheck);break; case 6:SbsLocation(headlist,resultype,pointcheck);break; case 7:Replace(headlist,resultype,pointcheck);bre

20、ak; case 8:Show(headlist,resultype,pointcheck,k); case 9:Delete(headlist,resultype,pointcheck);break; case 10:End(headlist,resultype,pointcheck,k);break; case 11:printf(t不存在此命令,请重新输入!n);ab(headlist,resultype);break; default: break; 2.void GetCommand(char c,StrHeadList &headlist,ResultType &resultype

21、) /得到对应输入的命令switch(c) case A: resultype.CmdNo=1;break;case E: resultype.CmdNo=2;break; case C: resultype.CmdNo=3;break; case L: resultype.CmdNo=4;break; case S: resultype.CmdNo=5;break; case I: resultype.CmdNo=6;break; case R: resultype.CmdNo=7;break; case P: resultype.CmdNo=8;break; case D: resulty

22、pe.CmdNo=9;break; case Q: resultype.CmdNo=10;break; default:resultype.CmdNo=11;break;3.void Assignment(StrHeadList headlist,ResultType &resultype,int &pointcheck) /赋值函数调用if(pointcheck=2)/ 语法判断 printf(nt命令输出的结果为:);printf(nt新赋值的字符串的内部名为:%d,串值为:,resultype.s0);puts(headlist.StrHeadresultype.s0.ch);print

23、f(n); ab(headlist,resultype);/程序循环执行else printf(nt命令语法错误!请重新输入!n); ab(headlist,resultype);/程序循环执行 4.void Equal(StrHeadList headlist,ResultType resultype,int &pointcheck) /判相等函数调用 if(pointcheck=4)/语法判断 printf(t命令输出结果为:);if(headlist.StrHeadresultype.s0.length!=headlist.StrHeadresultype.s1.length)/如果两字

24、符串长度不相等 printf(UNEQUALn); ab(headlist,resultype); else for(i=0;iheadlist.StrHead1.length;i+)/各字符判断 if(headlist.StrHeadresultype.s0.chi!=headlist.StrHeadresultype.s1.chi)/如果有一个字符不相等 printf(UNEQUAL); printf(n); ab(headlist,resultype); printf(EQUAL); printf(n); ab(headlist,resultype);/程序循环执行 else print

25、f(nt命令语法错误!请重新输入!n); ab(headlist,resultype);/程序循环执行 5.void Connect(StrHeadList headlist,ResultType resultype,int &pointcheck) /字符串联接 if(pointcheck=4)/语法判断printf(t命令输出结果为:); while(headlist.StrHeadi.ch)/寻找还没分配的串指针的下标 i+;headlist.StrHeadi.ch=(char*)malloc(headlist.StrHeadresultype.s0.length+headlist.St

26、rHeadresultype.s1.length)*sizeof(char);/分配长度为两个字 符串总长度的空间for(;j(headlist.StrHeadresultype.s0.length);j+)/存储第一个字符串headlist.StrHeadi.chj=headlist.StrHeadresultype.s0.chj; for(;k0&start=headlist.StrHeadresultype.s0.length&end=start)/如果输入数据不正确 break;/退出循环 else /如果语法不正确 printf(tstart不能小于0或大于字符串的长度n); pri

27、ntf(tend不能小于start且不能大于字符串的长度n); printf(t请重新输入子串长度n); start=0; end=0; else printf(nt命令语法错误!请重新输入!n); ab(headlist,resultype); if(start=-1) printf(t命令输出结果为:);for( i=start;i=end;i+)/显示从start到end长度的子字符串printf(%c,headlist.StrHeadresultype.s0.chi);printf(n);ab(headlist,resultype);/程序循环elseab(headlist,resul

28、type);/程序循环7.void SbsLocation(StrHeadList headlist,ResultType resultype,int &pointcheck) /子串在主串的第一次出现的位置if(pointcheck=4&headlist.StrHeadresultype.s1.length!=0)/语法判断 printf(t命令输出结果为:);for(;i=(headlist.StrHeadresultype.s0.length-headlist.StrHeadresultype.s1.length);i+)/寻找子串 if(headlist.StrHeadresultyp

29、e.s0.chi=headlist.StrHeadresultype.s1.ch0)/如果主串某个字符与子串第一个字符相等 for(j=0;j(headlist.StrHeadresultype.s0.length-headlist.StrHeadresultype.s1.length)/如果不存在子串 printf(nt第一字符串不存在第二字符串); printf(n); ab(headlist,resultype);/程序循环else printf(nt命令语法错误!请重新输入!n); ab(headlist,resultype);/程序循环 8.void Replace(StrHeadL

30、ist headlist,ResultType resultype,int &pointcheck)/子串替换函数while(headlist.StrHeadcurrent.ch)/寻找还没分配的串指针的下标 current+;headlist.StrHeadcurrent.ch=(char *)malloc(SIZE*sizeof(char); if(pointcheck=6)/语法判断 printf(t命令输出结果为:); headlist.StrHeadcurrent.length=0;/替换后的子串存储在headlist.StrHead0.ch中for(i=0;i=headlist.S

31、trHeadresultype.s0.length-headlist.StrHeadresultype.s1.length;i+,n+)/寻找相同子串并替换 if(headlist.StrHeadresultype.s0.chi=headlist.StrHeadresultype.s1.ch0)/寻找主串相同的子串 for(j=i,k=0;ji+headlist.StrHeadresultype.s1.length;j+,k+) if(headlist.StrHeadresultype.s0.chj=headlist.StrHeadresultype.s1.chk) m+; else head

32、list.StrHeadcurrent.chn=headlist.StrHeadresultype.s0.chi;/不然将不相等字符存在headlist.StrHead0.ch中 if(m=headlist.StrHeadresultype.s1.length)/如果找到相同的子串 if(headlist.StrHeadresultype.s2.length!=0) /如果替换串不是空串for(j=i,k=0;ji+headlist.StrHeadresultype.s2.length;j+,k+)/将 替换串存储在headlist.StrHead0.ch headlist.StrHeadcu

33、rrent.chn=headlist.StrHeadresultype.s2.chk; n+;/替换后子串的长度自增 i=i+headlist.StrHeadresultype.s1.length-1; n=n-1; m=0; for(;iheadlist.StrHeadresultype.s0.length;i+) headlist.StrHeadcurrent.chn=headlist.StrHeadresultype.s0.chi; n+; headlist.StrHeadcurrent.length=n-1;/得到替换后字符串的长度 headlist.StrHeadcurrent.ch

34、n=0;/字符串结束符 puts(headlist.StrHeadcurrent.ch); printf(n); ab(headlist,resultype);/程序循环 else printf(nt命令语法错误!请重新输入!n); ab(headlist,resultype);/程序循环 9.void Show(StrHeadList headlist,ResultType resultype,int &pointcheck,int k) /显示字符串函数if(pointcheck=0&k=2)/语法判断printf(t命令输出结果为:);while(headlist.StrHeadi.ch)/输出不是空串的字符串 printf(nt内部名:%dt串值:,i);puts(headlist.StrHeadi.ch)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号