1、 课程设计说明书课程设计说明书 题 目: 双向循环链表 基于邻接表的图的实现 课 程: 数据结构课程设计 院 (部) : 计算机科学与技术 专 业: 计算机科学与技术 班 级: 学生姓名: 学 号: 指导教师: 完成日期: I 目目 录录 课程设计任务书. 错误错误! !未定义书签。未定义书签。 课程设计任务书. II 双向循环链表的实现 2 一、问题描述 2 二、数据结构 4 三、逻辑设计 5 四、编码 7 五、测试数据 9 六、测试情况. 11 基于邻接表的图的实现. 12 一、问题描述. 12 二、数据结构. 12 三、逻辑设计. 14 四、编码. 15 五、测试数据. 16 六、测试情
2、况. 16 结 论 17 参考文献. 18 课程设计指导教师评语. 19 I 课程设计任务书课程设计任务书 I I 设计题目 双向循环链表的实现 已 知 技 术 参 数 和 设 计要求 1. 建立一个空表。 2. 向里插入新的元素。 3. 输出双向循环链表的元素以及其 size 4. 返回索引为 i 的元素。 5. 返回元素 x 第一次出现在双向循环链表中的索引 6. 删除索引为 i 的元素。 7. 按从左到右或者从右到左的顺序输出元素 设 计 内 容 与步骤 1、设计存储结构 2、设计算法 3、编写程序,进行调试 4、总结并进行讲解 设 计 工 作 计 划 与 进 度安排 2016.7.9-
3、7.12 写代码 2016.7.13-7.14 完成课程设计说明书以及相关 ppt 设计考核 要求 1、考勤 20% 2、课程设计说明书 40% 3、成果展示 40% II 课程设计任务书课程设计任务书 IIII 设计题目 基于邻接表的图的实现(insertEdge) 已 知 技 术 参 数 和 设 计要求 1、 建立一棵空表 2、 输出图的顶点数 3、 输出图的边数 4、 判断是否是有向图 5、 判断是否是加权图 6、 检查边是否存在 7、 插入边 8、 输出顶点的度,只用于无向图 9、 输出顶点的入度和出度 设 计 内 容 与步骤 1、 设计存储结构 2、 设计算法 3、 编写程序,进行调
4、试 4、 总结并进行演示、讲解 设 计 工 作 计 划 与 进 度安排 2016.7.9-7.12 写代码 2016.7.13-7.14 完成课程设计说明书以及相关 ppt 设计考核 要求 1、 考勤 20% 2、 课程设计说明书 40% 3、 成果展示 40% 指导教师(签字) : 教研室主任(签字) : 3 双向双向循环链表的实现循环链表的实现 一、问题描述一、问题描述 用图示的方法描述所处理的双向循环链表的建立,以及插入删除操作前后 链表的状态 1.只有有头节点的双向循环链表 2.有头节点的双向循环链表 3.双向循环链表的插入 headerN ode a3 a1 a0 Header No
5、de a4 ai-1 ai q p 4 4.双向循环链表的删除 二、数据结构二、数据结构 templatetemplate structstruct chainNode / data members T T element; chainNode *right; chainNode *left; / methods chainNodechainNode() left=NULL; right=NULL; chainNodechainNode(constconst T T left=NULL; right=NULL; chainNodechainNode(constconst T T thisthi
6、s-left = left; thisthis-right = right; deleteNode p 5 ; 三、逻辑设计三、逻辑设计 1、总体思路 (1)存储结构 基于邻接表,继承 linerlist 类,具体实现双向循环链表的存储 (2)基本函数 双向循环链表的插入,删除 2、模块划分(图示的方法) (1)erase(删除) Yes No Yes 开始 checkIndex (theIndex) p = headerNode;i=0; iright;i+; p-right= deleteNode -right; deleteNode-right-left=p; listSize-; delete deleteNode; 结束 6 (2)insert(插入) No Yes No Yes 开始 theIndexlistSize p=headerNode;i=0; coutright=p-right; q-left=p; p-right=q; q-right-left=q