数据结构演示系统1与3介绍(doc 82页)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告《数据结构(c语言版)》课程设计

题目数据结构演示系统1 和3 学生姓名

学号

指导教师

学院信息科学与工程学院

专业班级计算机类

完成时间七月

czlzdj@

目录

第一章项目概述 (3)

1.1 问题的要求分析与描述 (3)

1.2 问题的要求和限制 (3)

第二章概要设计 (4)

第三章详细设计 (8)

3.1系统程序的组成框图 (8)

3.2 程序的流程图 (11)

3.3 算法的源程序 (15)

第四章调试分析 (24)

4.1 调试方法 (24)

4.2 算法时间复杂度 (25)

第五章测试结果 (26)

5.1 正确的输入与输出 (26)

5.2 错误的输入与输出 (32)

第六章课程设计总结

6.1 个人的体会和感想 (41)

附录A:演示系统1源代码有详细注释 (43)

附录B:演示系统2源代码 (60)

参考文献 (82)

第一章项目概述

1.1 问题的描述与分析

本次课程设计,我完成了两个题目,数据结构演示系统1、数据结构演示系统2。

数据结构演示系统1主要有两种数据的存储结构要实现,顺序和链式,每种存储结构都要实现至少四种算法插入、删除、查询、合并。对于串还要实现模式匹配,使用KMP 的快速算法,减小时间复杂度。1、顺序表的插入、删除和合并等基本操作。2、利用插入运算建立链表;实现链表的查找、删除、计数、输出等功能以及有序链表的合并。3、串的模式匹配(包括求next和nextval的值)。

数据结构演示系统 2 涉及了数据结构常用的三种存储结构,顺序、链式、散列,算法主要是查找和排序。1、实现静态查找(包括顺序查找、折半查找和插入查找)和动态查找(包括二叉排序树和二叉平衡树)。2、根据输入的数据实现下列内部排序:①直接插入排序、折半插入排序、表插入排序和希尔排序;②快速排序;③简单选择排序和堆排序;④归并排序;⑤链式基数排序。

1.2 问题的要求和限制

1.2.1我做的界面以用户为主,还兼容了容错能力。首先就是菜单的选择均有容错能力。整形数字的范围是-32768--32767,要求用户输入显示在用户界面上的整形数字(1、2、3、4、…),当用户输入不正确的选项时,会自动提示输入错误,并返回原菜单要求用户从新输入。其次,每一个子菜单同样有相同的容错能力,对于某些子系统,用户必须先建立线性表才能进行操作,若不先建立线性表,程序同样会回到主菜单,并提示用户建立线性表。

1.2.2 由于用户能输入任意个数字进行演示,并且长度由用户规定。系统规定用户输入的长度应该在1—100以内。长度小于1就没有意义了,但也不能太大,输入长度太大,用户会没有时间去输入线性表的元素。在输入数字时,理论上是表的长度不能小于1。如果小于1,则会提示输入错误,菜单自动返回。此外,在进行某些操作,如插入删除时,用户能在任意位置插入且能在任意位置删除,不过位置必须在线性表的范围之内。若超过线性表的现有长度,那么同样会报错。

1.2.3 在用户界面(DOS界面),用户每执行完一次操作,都会有相应的提示。若用户建立了线性表,则会显示建立成功。若用户进行查找,都会提示查找成功与否。输出地形式是以用户存入线性表的数字为准,一般都是整形。输入其它形式的数字,会自动转化为整形。在串的模式匹配中,模式串和主串的长度输入是整形,规定用户必须输入1—100的数字,否则会提示错误,要求从新输入。而串的值是字符型。必须输入字符,才能得到正确的结果。

1.2.4 数据结构演示系统1主要有四个模块,一个主模块,三个子模块。主模块调用三个函数,SqListfun(),LinkListfun(),Index_SS(),分别指向三个不同功能的子模块。SqListfun()实现上述顺序线性表的算法,LinkListfun()实现上述连是线性表的算法,最后一个Index_SS()实现上述串的模式匹配算法。每一个模块的调用以及返回都是通过用户选择菜单来实现的。这些模块能够演示顺序表建立、插入、删除、查找、无序合并和有序合并,链表的建立、插入、删除、查找有序合并,用KMP算法实现串的模式匹配,给用户看每一次匹配失败的地方,和字串的 next和nextval值。

正确输入以及出入结果:正确的菜单选择是界面上面的数字,正确的大小范围是1到100的长度建立,正确的插入范围是线性表的长度范围,正确的字符串长度也是1到100,正确的模式匹配应输入字符。有了正确的输入,系统会按要求,显示正常的结果,如表中的元素是什么,表插入成功后表的元素也会增加,删除成功会显示删除的是哪个元素哪个位置。

错误的输入会导致错误的输出,输入不在菜单范围内的数字系统会自动提示,接着返回原菜单。输入超过线性表长度范围的位置,系统不会进行插入或者删除,并自动返回原菜单。在有序合并的共能当中,没有按递增序列输入数字,合并后的链表也不会是有序的。

第二章概要设计

2.1 数据类型定义

数据机构演示系统1定义了五种存储结构,typedef int Status;是定义函数的返回值类型,也可以定义数据的类型,在数据有变动时而算法不变时,只需要改变其中的“int”就可以。SqList是顺序表的数据类型,其中包含三个成员,一个是ElemType的指针变量,第二个是表中元素的个数,第三个是表的当前容量。第三个是上面提到的ElemType,主要表示各种元素的数据类型。第四个是typedef struct LNode{} *LinkList,这个是链表的元素类型,每次用链表都用这个来定义新结点。最后是typedef unsigned char SString[MAXSTRLEN +1];这个是字符串数组,在模式匹配中用到。

ElemType

typedef int ElemType;

typedef struct{

ElemType *elem;

int length;

int listsize;

}SqList;

typedef unsigned char SString[MAXSTRLEN +1];

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList;

相关文档
最新文档