图的基本操作-数据实验报告书.docVIP

  • 88
  • 0
  • 约6.91千字
  • 约 11页
  • 2018-12-30 发布于广东
  • 举报
数据结构实验报告 计科111 ** 2011008141** 第 第 PAGE \* MERGEFORMAT 2 页 《数据结构》 实 验 报 告 书 实验内容:图的基本操作 2011008141** 计科111 ** 前言      计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习计算机编程仅仅了解计算机语言是不够的,还必须掌握数据的组织、存储和运算的一般方法,这便是数据结构课程中所研究的内容,也是我们编写计算机程序的重要基础,由于它对计算机学科起到承前启后的作用,因此本课程被列为计算机等相关专业最重要的专业基础课;同时数据结构是计算机专业教学的一门核心课程。计算机各领域都要用到各种数据结构,而且要从事计算机科学与技术工作,尤其是计算机领域的软件开发工作,必须具备较强的数据结构基础。   数据结构课程内容丰富、学习量大,实践性强;隐含在各部分内容中的方法和技术多;算法设计具有动态性和抽象性等特点,看懂听明白与掌握会应用之间有相当大的一段距离。所以学生必须多实践才能进一步加深对课程的理解,理解和掌握算法设计所需的方法和技术,为整个专业学习打下良好的基础。 一、实验目的 1、使学生可以巩固所学的有关图的基本知识。 2、熟练掌握图的存储结构。 3、熟练掌握图的两种遍历算法。 二、实验内容 [问题描述]   对给定图,实现图的深度优先遍历和广度优先遍历。 [基本要求]    以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。 【测试数据】   由学生依据软件工程的测试技术自己确定。 三、实验前的准备工作 1、掌握图的相关概念。 2、掌握图的逻辑结构和存储结构。 3、掌握图的两种遍历算法的实现。 四、实验报告要求 1、实验报告要按照实验报告格式规范书写。 2、实验上要写出多批测试数据的运行结果。 3、结合运行结果,对程序进行分析。 算法设计 程序所需头文件已经预处理宏定义和结构体定义如下 #includeiostream.h #define MaxVerNum 100 struct edgenode { int endver; int inform; edgenode* edgenext; }; struct vexnode { char vertex; edgenode* edgelink; }; struct Graph { vexnode adjlists[MaxVerNum]; int vexnum; int arcnum; }; 队列的定义及相关函数的实现 struct QueueNode { int nData; QueueNode* next; }; struct QueueList { QueueNode* front; QueueNode* rear; }; void EnQueue(QueueList* Q,int e) { QueueNode *q=new QueueNode; q-nData=e; q-next=NULL; if(Q==NULL) return; if(Q-rear==NULL) Q-front=Q-rear=q; else { Q-rear-next=q; Q-rear=Q-rear-next; } } void DeQueue(QueueList* Q,int* e) { if (Q==NULL) return; if (Q-front==Q-rear) { *e=Q-front-nData; Q-front=Q-rear=NULL; } else { *e=Q-front-nData; Q-front=Q-front-next; } } 创建无向图 void CreatAdjList(Graph* G) { int i,j,k; edgenode* p1; edgenode* p2; cout请输入顶点数和边数:endl; cinG-vexnumG-arcnum; cout开始输入顶点表:endl; for (i=0;iG-vexnum;i++) { cinG-adjlists[i].vertex; G-adjlists[i].edgelink=NULL; } cout开始输入边表信息:endl; for (k=0;kG-arcnum;k++) { cout请输入边Vi,Vj对应的顶点:; cinij; p1=new edgenode; p1-endver=j; p1-edgenext=G-adjlists[i].e

文档评论(0)

1亿VIP精品文档

相关文档