资源描述:
《数据结构课程设计+串的基本操作演示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、3.4串的基本操作演示一、需求分析1.用堆分配存储表示实现Hstring串类型的最小操作子集。2.实现串抽象类型的其余基本操作(如联接、删除等),且不能使用c语言本身提供的串函数,必须自己构造新的函数实现串的基本操作。3.本演示系统是一个命令解释程序,循环往复的处理用户输入的每一条命令,直至终止程序的命令为止。4.参数的合法性必须严格检查,要严格按照命令的输入格式进行输入,否则程序可能无法正确执行指令。二、概要设计实现串的抽象数据类型和实现其基本操作,程序中将涉及下列抽象数据类型:1.定义串的基本主结构ADTString{数据对象:D={ai
2、ai∈charcater
3、set,i=1,2,…,n,n>=0}数据关系:R1={
4、ai-1,ai∈D,i=1,2,…,n}基本操作:StrCompare(HStringS,HStringT)初始条件:S和T是已存在的Hstring类型。操作结果:比较其值,显示结果“UNEQUAL”或“EQUAL”。StrLength(HStringS)初始条件:S是已存在的Hstring类型。操作结果:返回该串的长度。Concat(HStringS1,HStringS2)初始条件:S1和S2是已存在的Hstring类型。操作结果:由S1和S2联接成新串。Index(HStringS,HSt
5、ringt)初始条件:S和T是已存在的Hstring类型。操作结果:显示第二个串在第一个串中首次出现的起始位置。Replace(HStringM,HStringt,HStringv)初始条件:M、t和v是已存在的Hstring类型。操作结果:将第一个串中所有出现的第二个串用第三个串替换,显示结果串的内部名和串值,原串不变。SubString(HStringS,intpos,intlen)初始条件:S是已存在的Hstring类型。操作结果:如果参数合法,则显示子串的内部名和串值。Strprint(HStringS)初始条件:S是已存在的Hstring类型。操作结果:显示
6、串S的内部名和串值。getin(intn)初始条件:处理命令串S1,操作结果:把串值存入串头表中Insert(intn)初始条件:要给指定的串赋值,n为指定的串的内部名操作结果:为指定内部名的串赋值show()初始条件:要求查看输入格式操作结果:输出各种命令的输入格式}ADTString二.存储结构及相应的类型定义公用头文件header.h#include#include#include#include#include#defineTRUE1#defineFALSE0#def
7、ineOK1#defineERROR0#defineOVERFLOW-2#defineMAXLEN100#defineMAXSIZE50typedefintStatus;(1)顺序存储结构typedefstructResultType{intCmdNo;//命令号或命令符ints[3];//命令的串参数的内部名(最多3)intnum[2];//命令的数值参数(最多2个)}ResultType,*Result;typedefstruct{char*ch;//若为非空串,则按串长分配存储区,否则ch为NULLintlength;//串长度intstate;//状态量}HS
8、tring,*String;typedefstruct{HStringStrHead[100];//串头数组intCurNum;//系统中现有的串的数目}StrHeadList,*StrHead;三、详细设计voidStrCompare(HStringS,HStringT){//比较两串的串值,显示结果“UNEQUAL”或“EQUAL”inti;if(S.length!=T.length)//先判长度是否相等,若不相等则显示“UNEQUAL”{printf("“UNEQUAL”");return;}else{for(i=0;i9、th;i++)//比较两串的串值,遇到不等就显示“UNEQUAL”if(S.ch[i]!=T.ch[i]){printf("“UNEQUAL”");return;}}printf("“EQUAL”");//比较完后,相等则显示“EQUAL”}voidConcat(HStringS1,HStringS2)//由S1和S2联接成新串{inti,j;j=KK->CurNum++;//为串头指针分配位置,申请(S1.length+S2.length)大小空间if((KK->StrHead[j].ch=(char*)malloc((S1.length+