资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1湖南工业大学课 程 设 计资 料 袋计算机与通信 学院(系、部) 2009 2010 学年第 二 学期 课程名称 数据结构 指导教师 职称 学生姓名 专业班级 学号 题 目 串的基本操作 成 绩 起止日期 2010 年 6 月 28 日 2010 年 7 月 4 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸1张456湖南工业大学2课程设计任务书2009 2010 学年第学年第 二二 学期学期学院(系、部) 专业 班级课程名称: 数据结构 设计题目: 串的基本操作演示 完成期限:自 2010 年 6 月 28 日至 2010 年 7 月 4 日共 1 周内 容 及 任 务1用堆分配存储表示实现 Hstring 串类型的最小操作子集。2实现串抽象类型的其余基本操作(如联接、删除等) ,且不能使用 c 语 言本身提供的串函数,必须自己构造新的函数实现串的基本操作。3本演示系统是一个命令解释程序,循环往复的处理用户输入的每一条命 令,直至终止程序的命令为止。4参数的合法性必须严格检查,要严格按照命令的输入格式进行输入,否 则程序可能无法正确执行指令。起止日期工作内容2010-6-28-2010-6-29设计本程序思路2010-6-29-2010-7-1实现子程序模块函数2010-7-1 -2010-7-2将子程序和主程序构建成完整的 C 源程序,并且进行相关编译 调试进 度 安 排2010-7-2 -2010-7-4数据测试、形成文档主 要 参 考 资 料指导教师 (签字): 年 月 日系(教研室) 主任( 签字): 年 月 日3数据结构数据结构设计说明书数据结构课程设计串的基本操作演示起止日期: 2010 年 6 月 28 日 至 2010 年 7 月 4 日计算机与通信学院(部)计算机与通信学院(部)学生姓名 班级 学号 成绩指导教师 (签字 )4年年 月月 日日湖南工业大学课程设计情况分析表湖南工业大学课程设计情况分析表课程设计名称数据结构设计周数17 周学院(部) 系(教研室) 指导教师 学生专业、班级 选题串的基本操作优良中及格不及格学生数成绩分布百分比学生课程设计存在 的主要问题改进措施及建议指导教师(签字): 年 月 日5系(教研室)主任(签字): 年 月 日备注:本表在课程设计完成后由指导教师填写,与课程设计资料一起存档。 目录目录1.1. 题目及需求分题目及需求分析析 VIVI2.2. 概要设计概要设计 VIIVII3.3. 详细设计详细设计 X X4.4. 调试分调试分析析 XIXXIX5.5. 用户手册用户手册 XXIXXI66.6. 测试测试结结果果 XXIIIXXIII7.7. 附录附录 程序清单程序清单 XXVXXV题目题目: :串的基本操作演示一一 . . 需求分析需求分析1用堆分配存储表示实现 Hstring 串类型的最小操作子集。2实现串抽象类型的其余基本操作(如联接、删除等) ,且不能使用 c 语言 本身提供的串函数,必须自己构造新的函数实现串的基本操作。3本演示系统是一个命令解释程序,循环往复的处理用户输入的每一条命 令, 直至终止程序的命令为止。4参数的合法性必须严格检查,要严格按照命令的输入格式进行输入,否 则 程序可能无法正确执行指令。二、概要设计二、概要设计实现串的抽象数据类型和实现其基本操作,程序中将涉及下列抽象数据类型:1定义串的基本主结构ADT String数据对象:D=ai| aicharcaterset,i=1,2,n,n=0数据关系:R1=|ai-1,aiD, i=1,2,n基本操作: StrCompare(HString S,HString T)初始条件:S 和 T 是已存在的 Hstring 类型。操作结果:比较其值,显示结果“UNEQUAL”或“EQUAL”。StrLength(HString S)7初始条件:S 是已存在的 Hstring 类型。操作结果:返回该串的长度。Concat(HString S1,HString S2)初始条件:S1 和 S2 是已存在的 Hstring 类型。操作结果:由 S1 和 S2 联接成新串。Index(HString S,HString t)初始条件:S 和 T 是已存在的 Hstring 类型。操作结果:显示第二个串在第一个串中首次出现的起始位置。Replace(HString M, HString t, HString v)初始条件:M、t 和 v 是已存在的 Hstring 类型。操作结果:将第一个串中所有出现的第二个串用第三个串替换,显示 结果串的内部名和串值,原串不变。SubString(HString S,int pos,int len)初始条件:S 是已存在的 Hstring 类型。操作结果:如果参数合法,则显示子串的内部名和串值 。Strprint(HString S)初始条件:S 是已存在的 Hstring 类型。操作结果:显示串 S 的内部名和串值 。getin(int n)初始条件:处理命令串 S1,操作结果:把串值存入串头表中Insert(int n)初始条件:要给指定的串赋值,n 为指定的串的内部名操作结果:为指定内部名的串赋值show()初始条件:要求查看输入格式操作结果:输出各种命令的输入格式 ADT String二二存储结构及相应的类型定义公用头文件 header.h #include #include #include #include #include #define TRUE 1 #define FALSE 0 #define OK 18#define ERROR 0 #define OVERFLOW -2 #define MAXLEN 100 #define MAXSIZE 50 typedef int Status; (1)顺序存储结构 typedef struct ResultType int CmdNo; /命令号或命令符 int s3; /命令的串参数的内部名(最多 3)int num2; /命令的数值参数(最多 2 个) ResultType,*Result ; typedef struct char * ch; /若为非空串,则按串长分配存储区,否则 ch 为 NULL int length; /串长度 int state; /状态量 HString,*String;typedef struct HString StrHead100; /串头数组int CurNum; /系统中现有的串的数目 StrHeadList,*StrHead; 三、详细设计三、详细设计void StrCompare(HString S,HString T) /比较两串的串值,显示结果“UNEQUAL”或“EQUAL”int i;if(S.length!=T.length) /先判长度是否相等,若不相等则显示“UNEQUAL”printf(“UNEQUAL”n“);return;else for(i=0;iCurNum+; /为串头指针分配位置,申请(S1.length+S2.length)大小空间9if(KK-StrHeadj.ch=(char*)malloc(S1.length+S2.length) *sizeof(char)=NULL) exit(OVERFLOW);for(i=0;iStrHeadj.chi=S1.chi; for(i=0;iStrHeadj.chS1.length+i=S2.chi;KK-StrHeadj.length=S1.length+S2.length; /(S1.length+S2.length)赋值给新串printf(“结果串的内部名和串值为:n“);/显示结果串名和串值printf(“%5d“,j);printf(“%c“, );printf(“);for(i=0;iStrHeadj.length;i+) printf(“%c“,KK-StrHeadj.chi);printf(“);printf(“n“);int StrLength(HString S)/返回 S 串的长度 return S.length; void Strprint(HString S)int i; printf(“%c“, );printf(“);for(i=0;iCurNum+;/为串头指针分配位置if(posS.length|lenS.length-pos+1)/判断参数是否合法printf(“ERROR: 参数不合法n“);return ERROR;if(!len) /当子串长度为空10KK-StrHeadn.ch=NULL;KK-StrHeadn.length=0;else/申请 len 长度的空间存储新串KK-StrHeadn.ch=(char *)malloc(len *sizeof(char);for(i=0;iStrHeadn.chi=S.chpos-1+i;KK-StrHeadn.length=len;printf(“子串的内部名和串值为:n“);/显示新串的内部名和串值printf(“%5d“,n);Strprint(KK-StrHeadn);printf(“n“); return OK; Status Index(HString S,HString t) /显示第二个串在第一个串中首次出现的起始位置int m,i,j;if(t.length=0)/若 t 串的长度为 0,则参数非法printf(“参数非法n“);elsefor(i=0;i=0) printf(“该位置不存在n“);/若找不到return ERROR;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号