开课实验室:计算机科学与工程实验(电子楼418B) 2022年12月5日
学院 |
计算机科学与网络工程学院 |
年级、专业、班 |
姓名 |
学号 |
||||
实验课程名称 |
数据结构实验 |
成绩 |
||||||
实验项目名称 |
图的操作与实现 |
指导老师 |
一、实验目的
掌握线性的定义及基本操作,用链表实现:遍历、查找、插入、删除、翻转。
二、使用仪器、器材
微机一台
操作系统:
编程软件:
三、实验内容
利用图的邻接表或邻接矩阵存储结构设计并实现各种操作算法(任选一种存储结构来实现算法)。
1、图的邻接表和邻接矩阵存储
建立下图的邻接表或邻接矩阵,并输出之;
2、图的各种遍历算法实现
以0结点为起点实现上述图的深度优先和广度优先遍历算法;
3、最小生成树的算法实现
利用普里姆(Prim)算法或克鲁斯卡尔(Kruskal)算法求上图的最小生成树,算法实现代码必须有注释。
4、最短路径的算法实现
利用狄克斯特拉(Dijkstra)算法求上图中0结点到其它结点的最短路径,算法实现代码必须有注释。
四、实验原理
填入自己的内容(思路或算法流程图或伪代码说明等)
1、图的邻接表和邻接矩阵存储
图的邻接矩阵是一种采用邻接矩阵数组表示顶点间相邻关系的存储结构。
图的邻接表是一种顺序与链式存储相结合的存储方法。
在邻接表中有两种类型的结点,一种是头结点,其个数恰好为图中顶点的个数;另一种是边结点。
边结点由3个域组成,adjvex表示与顶点i邻接的顶点编号,nextarc指向下一个边结点,weight存储与该边相关的信息,例如权值等。
头结点由两个域组成,data存储顶点i的名称或其他信息,firstarc指向顶点i的单链表中的首结点。
2、图的各种遍历算法实现
图的遍历:从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次的过程。