1、1 课程设计实验报告 课程名称: 数据结构课程设计 设计题目:数据结构相关算法的演示系统(1) 院系:信息科学与工程学院 2 目录 一、 需求分析 3 二、 概要设计 4 三、 详细设计 6 四、 调试分析 21 五、 测试结果 23 六、 课程设计总结 33 七、 参考文献34 八、 附录34 3 一、需求分析: 设计一个数据结构相关算法的演示系统,主要实现的功能如下: 1:顺序表的插入、删除和合并等基本操作; 2: 利用插入运算建立链表;实现链表的插入、删除、计数、输出及有序链表的合并; 3:串的模式匹配(包括求 next 值和 nextval 值) 。 基于以上要求,可以在设计系统的时候
2、,在主界面设计三个大模块,即是按照要求来划分模 块,每个模块实现不同的功能要求,第一个模块就实现线性表的相关操作,第二个模块就实 现链表的相关操作,第三个模块就实现串的相关操作。 (一) :在第一个模块中,即是顺序表的相关操作中,主要能实现顺序表的循环插入赋值, 插入、删除和合并等基本操作,顺序表的元素可以是数字也可以是字符等,但是在程序中已 经定义 ElemType 为 int 型,故输入的形式为整数,采用的是动态存储分配(初始定义 LIST_INIT_SIZE 100) ,当输入的元素过多内存不足是会自动添加(LISTINCREMENT 10) ,当 然输出的也是整数,第一个模块根据功能分
3、为几个小菜单项,以下是测试数据: 顺序表的初始化,输入 1、2、3、4 以00结束,输出为:初始化后的顺序表元素为 NO.0 1, NO.0 2, NO.0 3, NO.0 4, 当然元素个数没有限制,但是单个的元素值限制,因为一 个 int 型数据通常用两个字节存放,即是 16 位二进制,当输入的数值超过这个范围是计算 机打印出乱码,此时可以选择重新输入数据。 在顺序表的插入操作中,要求你输入插入的位置和插入的值,例如在上面初始化的基础 上, 在第 4 个位置插入 4, 结果为: 插入元素后的顺序表元素为 NO.0 1, NO.0 2, NO.0 3, NO.0 4,当插入的位置大于了已有的
4、表长度,则系统会提醒输入错误,请重新输入!删除操 作和插入操作一样,首先选择要删除的元素位置,例删除第二个元素,结果为:删除操作后 顺序表的元素是 NO.0 1, NO.0 3, NO.0 4,同样的当所选择的位置大于了当前已有的长 度,则系统提起输入错误,请重新输入! ! 在顺序表的合并操作中,主要是把两个元素值非递减排列的线性表合并为一个,并且合 并后的顺序表值也是非递减的,输入另外一个顺序表的元素,例输入 4、5、6,结果为:合 并后的顺序表元素为 NO.0 1, NO.0 2, NO.0 3, NO.0 4,、NO.0 5, NO.0 6, 当所输 入的元素值不是按非递减的顺序,例两表的元素分别为 6、2、1 和 8、4、3 时,结果为 6、 2、1、8、4、3,并无顺序。 (二) :在第二个大模块中,主要实现的是链表的初始化,插入,删除,计数,查询和有序 链