数 据 结 构 课 程 设 计
设计题目: 串的存储表示及基本操作 学生姓名: 专业班级:
课题名称 院 系 学 号 串的存储表示及基本操作 姓 名 年级专业 成 绩 1、课题设计目的: (1):掌握串的基本存储结构; (2):掌握串的基本运算及其实现; 2、课题设计意义:通过此次对于串及其基本操作的课程设计,更深层次课题设计 的了解串的基本概念、特征,掌握串的基本存储结构、基本运算及其实现。目的与 根据课程设计的目的和基本要求,注意一些容易发生错误的问题,从而进设计意义 一步的认真分析问题、总结结论和经验,理解设计的思想和构思。联系到生活上的实际问题,培养课程设计的能力及思想构思。 指导教师: 年 月 日 1
目 录
第一章 数据结构课程设计的目的、基本要求及其解析 ......................... 1
1.课程设计的目的: .................................................. 1 2.课程设计要求: .................................................... 1 3.课程设计题目解析: ................................................ 1 第二章 程序设计内容 ..................................................... 1
1.程序设计的基本思想 ............................................... 1 2.程序设计代码: ..................................................... 3 3.程序运行结果: ................................................... 8 第三章 程序设计的优缺点及遇到的问题 .................................... 12
3.1:课程设计的优缺点: ............................................ 12 3.2 遇到的问题: ................................................... 12 第四章 总结 ............................................................ 12
4.1 思考和小结: ................................................... 12 4.2 参考文献: ..................................................... 13
第一章 数据结构课程设计的目的、基本要求及其解析
1.课程设计的目的:
(1):掌握串的基本存储结构。 (2):掌握串的基本运算及其实现。 2.课程设计要求:
(1):将上机程序全部调试通过。 (2):结合程序分析运行结果。 3.课程设计题目解析:
顾名思义,串及其基本操作,就是要在理解串的基本概念和特征的基础上,了解串的内部表示和处理方法。这样才能有效地实现串的基本操作。串,也还是字符串,是一种特殊的线性表。特殊之处在于表中的每一个元素都是字符,以及由此而要求的一些特殊操作。在串及其基本操作中,要求的操作有联接、求串长、求子串、比较串的大小、串的插入、串的删除、子串的定位和置换。因为所要进行的操作比较零散也比较多,所以就要用到多个函数把这个整体的课程设计划分成多个模块来进行。每个函数对应一个功能。在主函数中,用一个菜单,就可以将原来的已分模块的函数系统地进行检验及操作。在程序设计的过程中,根据课程设计的目的和基本要求,注意一些容易出错的地方及问题。
第二章 程序设计内容
1.程序设计的基本思想:(对于串及其基本操作中,程序被分割为很多的模块。所以以下的程序设计业分成好几个方面来一一阐述)
1). 字符串的联接:在该函数中,strcat(str1,str2)就是将串str2紧接着放在串str1的串值的末尾,组成一个新的串str1。最后所得的新的str1即为所求的原来的两个字符str1和str1的联接后的结果。输出即是。
2).比较两个字符串的大小:在该函数中,strcmp(str1,str2)是一个函数,它的功能是比较两个串str1和str2的大小,通过if语句的判断函数strcmp(str1,str2)的函数值大小,其中函数值小于、等于和大于0时,分别表示str1
3)求字符串的串长:在该函数中,要先定义一个整形变量i,strlen(str)表示字符串str的长度,它是一个整形函数。通过函数strlen(str)来算出字符串的长度,然后赋值给整形变量i输出,从而i的值即为所求的字符串的长度。
4). 串的复制:在该函数中,首先分别输入两串字符串str1和str2,通过函数strcpy(str1,str2)来实现str2复制给str1的功能,得到复制后的字符串为新的str1,输出即为复制后的结果。
1
5).求字符串的插入:该函数中有三个形参,两个是字符串s和t,一个是整形形参i。即把字符串t插入到s的第i个元素之后。在函数中,定义两个个整形变量j、k,其中&s->curlen和&t->curlen分别指原字符串和要插入字符串的长度。用一个for循环,\(j=s->curlen—1;j>=i;j--)\,满足循环条件的要进行的操作时把s->ch[j]赋值给s->ch[j+t->curlen],就是让s->ch中空出等于&t-.curlen的长度的空间,好让t可以插入。下面再用一个for循环''for(k=0,j=i;t->ch[k]!='\\0';k++,j++)\再把t->ch[k]赋值给s->ch[j];这样的把t插入到了s中。最后,给s->ch[s->curlen+t->curlen]赋值一个\,这时的s->ch[s->curlen+t->curlen]就是一个新的字符串,然后把s->ch[s->curlen+t->curlen]再赋值给s->curlen即可得到所求的新的字符串
6).求串的删除:该函数有三个形参,一个是字符串s,两个是整形形参i和j,在函数中定义一个整形变量k,输入原字符串和其长度&s->curlen,函数中用for循环,\把s->ch[k]赋值给s->ch[k-j],既用覆盖的方式删除从第i个元素开始连续j个元素,最后把''\\0''赋值给s->ch[k-j],再把k-j赋值给s->curlen。s->ch就是所求的删除从第i个元素开始连续j个元素后的新的字符串。
7). .求字符串的置换:这个函数中有四个形参,两个字符串s和t,两个整形形参i和j,在函数内部还要定义五个整形变量k=0、l、n、m、p。首先把i+j赋值给l;通过输入输入主字符串和要置换的字符串的长度、主字符串和要置换的字符串s和t。先要判断j和将要被置换的字符串的串长关系,如果刚好相等,就让t从第一个元素开始,s从第第i个元素开始,一一赋值。如果
t
的串长比较大,则用一个
for
循环,
for''(k=s->curlen;k>=i+j-1;k++)'',s[k]赋值给s[k-j+t->scurlen],这样剩余的空间刚好可以用来存放t的,同样的,如果t的串长比较小,同样用以for循环,''for(k=i+j-1,m=i;s[k]!='\\0';k++,m++)'',s[k]赋值给s[m+t->curlen-1],s剩余的空间也刚好用来存放t的。然后,把t中的元素对应的赋值给s。最后,在s的最后一个元素后赋值一个'\\0',这时的s,就是t置换后的新的字符串。
8).子串的定位:这个函数有两个形参,s和t,在函数内部,还要定义两个整形变量i=0和j=0。用while语句'' while((i
9)主函数:在主函数中,因为要最多输入两个字符串,所以要先定义两个字符串s和t。有的主函数需要用到整形的变量,最多是两个,所以也要定义两个整形变量k和m。函数中,有很多的功能不同的函数,这样就要求验证很多次,所以在这里我们考虑用
2