山东建筑大学数据结构课程设计报告

上传人:鲁** 文档编号:486106299 上传时间:2022-10-13 格式:DOCX 页数:31 大小:178.42KB
返回 下载 相关 举报
山东建筑大学数据结构课程设计报告_第1页
第1页 / 共31页
山东建筑大学数据结构课程设计报告_第2页
第2页 / 共31页
山东建筑大学数据结构课程设计报告_第3页
第3页 / 共31页
山东建筑大学数据结构课程设计报告_第4页
第4页 / 共31页
山东建筑大学数据结构课程设计报告_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《山东建筑大学数据结构课程设计报告》由会员分享,可在线阅读,更多相关《山东建筑大学数据结构课程设计报告(31页珍藏版)》请在金锄头文库上搜索。

1、山东建筑大学计算机科学与技术学院课程设计说明书题目:基于逆邻接表的有向图基本操作的实现课程:数据结构院(部):计算机学院专业:计科班级:133学生姓名:潘含笑学号:20131111092指导教师:李盛恩完成日期:2015.07.03山东建筑大学计算机学院课程设计说明书目 录课程设计任务书I课程设计任务书II逆邻接链表实现有向图3一、问题描述3二、数据结构3三、逻辑设计3四、编码5五、测试数据14六、 测试情况16逆邻接链表实现有向图17一、问题描述17二、数据结构17三、逻辑设计17四、编码18五、测试数据24七、 测试情况24结 论26课程设计指导教师评语28山东建筑大学计算机学院课程设计说

2、明书山东建筑大学计算机科学与技术学院课程设计任务书设计题目基于逆邻接表的有向图基本操作的实现题目三、实现类 NetWork,实现 BFS、DFS、拓扑排序,并实现采用已 知 技 术 逆邻接表作为存储结构的有向图,要继承 NetWork。逆邻接表要使参 数 和 设用 STL提供的 List和 Vector 等实现。计要求1、设计存储结构设 计 内2、设计算法容 与 步骤3、编写程序,进行调试4、总结并进行演示、讲解设计工作2015.6.172015.6.23 ,实现基类 Network 和有向图 Graph,实现逆邻接链表的存储结构。计划与进2015.6.232015.7.1,编写测试代码。度安

3、排2015.7.12015.7.3,改正一些错误,完成实验。1、考勤 20%设计考核2、课程设计说明书50%要求3、成果展示 30%指导教师(签字):教研室主任(签字)I山东建筑大学计算机学院课程设计说明书山东建筑大学计算机科学与技术学院课程设计任务书设计题目双向循环链表已 知 技 术实现双向循环链表。参数和设计要求5、设计存储结构设 计 内6、设计算法容 与 步骤7、编写程序,进行调试8、总结并进行演示、讲解设 计 工 作,实现双向循环链表计 划 与 进,编写测试代码。度安排设计考核4、考勤 20%5、课程设计说明书50%要求6、成果展示 30%指导教师(签字):教研室主任(签字)II山东建

4、筑大学计算机学院课程设计说明书逆邻接链表实现有向图一、问题描述215436二、数据结构12314123526345三、逻辑设计1、总体思路先实现 Network 类,通过队列实现 BFS,通过堆栈实现 DFS和拓扑排序。再构建 Graph 类,并继承 Network 类实现以逆邻接链表为存储结构的有向图。2、模块划分(以图示的方法给出各个函数的调用关系)3山东建筑大学计算机学院课程设计说明书Network 类BeginNextvertexEdgesVerticesInitializeposDeactivateposBFSDFSTopological虚函数虚函数虚函数虚函数虚函数虚函数函数函数函

5、数BeginNextvertexEdgesVerticesInitializeposDeactivateposOut 函数函数函数函数函数函数函数Graph 类3、函数或类的具体定义和功能Network 类:4山东建筑大学计算机学院课程设计说明书virtual int Begin(int i) = 0;/确定起始顶点virtual int Nextvertex(int i) = 0;/下一个顶点virtual int Edges()=0;/确定点virtual int Vertices()=0;/确定边virtual void Initializepos(inti)=0;/让迭代器等于链表的第

6、 i 个顶点的第一个元素virtual void Deactivatepos(int i)=0;/删除迭代器指的元素void BFS(int v,int reach,int label,int a);/宽度遍历void DFS(int v,int reach,int label,int a);/深度遍历bool Topological(int v);/拓扑排序virtual Network();/析构函数Graph 类:virtual Graph();/析构函数int InDegree(int node);/入度int OutDegree(int node);/出度Graph& Add(int

7、 node1, int node2);/添加点Graph& Delete(int node1, int node2);/删除点int Begin(int i);/确定起始顶点int Nextvertex(int i);/下一个顶点int Edges() return e;/确定点int Vertices() return n;/确定边void Initializepos(inti)pos=ali.begin();/ 让迭代器等于链表的第i 个顶点的第一个元素void Deactivatepos(int i)ali.erase(pos);/删除迭代器指的元素void Out();/输出函数四、编

8、码/Network.h#include #include#include#include using namespace std;class Network public:virtual int Begin(int i) = 0;5山东建筑大学计算机学院课程设计说明书virtual int Nextvertex(int i) = 0;virtual int Edges()=0;virtual int Vertices()=0;virtualvoid Initializepos(inti)=0;/让迭代器等于链表的第i 点的第一个元素virtual void Deactivatepos(int

9、i)=0;/删除迭代器指的元素void BFS(int v,int reach,int label,int a);/宽度遍历void DFS(int v,int reach,int label,int a);/深度遍历bool Topological(int v);/拓扑排序virtual Network();/Network.cpp#include Network.hvoid Network:BFS(int v,int reach,int label,int a)int n=Vertices();/获取 n 的值 , 有几个顶点queue Q;/创建一个队列intk=0;/定义一个 k 来使

10、元素得到保存reachv=label;/ 标记点ak+=v;/ 用数组记录 BFS的遍历顺序Q.push(v);/把一个元素加入队列while(!Q.empty()int x;x=Q.front();/获取队列中的第一个元素Q.pop();/让队列中的第一个元6山东建筑大学计算机学院课程设计说明书素出队for(int i=1;i=n;i+)/寻找 x 的下一个节点int u=Begin(i);if(u=x)&(!reachi)/ 因为是逆邻接链表Q.push(i);reachi=label;ak+=i;/把标记的元素放入遍历数组while(u)/ 看后面是不是还有节点u=Nextvertex(i);if(u=x)&(!reachi)Q.push(i);re

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号