数据结构基础:无向图的顶点与边分析

需积分: 15 1 下载量 133 浏览量 更新于2024-08-22 收藏 2.51MB PPT 举报
"数据结构基础课程讲解,包括无向图的存储、考试要求、参考书目及基本概念和方法的介绍。" 在数据结构的基础学习中,无向图是一种重要的概念。无向图是由顶点(节点)和边构成的图形,其中每条边连接两个顶点,并且没有方向性。若有一个无向图,包含n个顶点和e条边,其存储通常采用邻接表的方式。在这种结构下,每个顶点对应一个头结点,头结点指向与该顶点相连的所有其他顶点。由于无向图中每条边连接两个顶点,所以每条边在邻接表中会被表示两次,因此需要2e个表结点。顶点i的度,即与它相邻的顶点数量,可以通过统计表i中的结点个数得到。整体上,要计算整个图的边数,可以在O(e+n)的时间复杂度内完成,这通常通过遍历所有顶点的邻接表实现。 数据结构课程的考核方面,根据描述,期末考试以开卷形式进行,占总成绩的70%,而平时作业和实验则占30%。考试的重点包括概念理解、解决问题的方法、技术应用、思维模式、关键步骤、程序设计风格等多方面,强调综合能力的考察。 教材推荐了金远平编著的《数据结构(C++描述)》,同时列举了几本参考书,如Horowitz、Sahni和Mehta的《数据结构基础(C++描述)》、Ford和Topp的《C++数据结构》以及Standish的《C中的数据结构、算法与软件原理》。 在数据结构与软件系统的关系上,设计软件时,首先需要构建数据模型来描述待处理的对象。数据结构不仅包含数据元素,还包含这些元素间的关系。数据结构可以是复杂的,由多个层次构成,每一层用更低层的数据结构表示,直到最底层的编程语言基本数据类型。数据结构的选取和实现直接影响到操作的效率,而算法的设计和效率则依赖于所选择的数据结构。软件系统往往通过不同层次的数据结构及其操作来构建,其中建模层的中间数据结构扮演着核心角色。 常见的数据结构,如数组、字符串、集合、线性表、栈、队列、链表、树和图等,都是在实际问题求解中广泛使用的。理解并掌握这些数据结构及其操作对于构建高效、实用的计算机软件至关重要。

寒假,皮皮准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,皮皮希望在出发之前知道任意两个城市之前的最短路程。 1033450-20180623095244077-353646184.png 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。 现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组e)来存储。比如1号城市到2号城市的路程为2,则设e[1][2]的值为2。2号城市无法到达4号城市,则设置e[2][4]的值为∞。另外此处约定一个城市自己是到自己的也是0,例如e[1][1]为0,具体如下。 1033450-20180623095252434-1650383278.png 基本要求 现在回到问题:如何求任意两点之间最短路径呢?通过之前的学习我们知道通过深度或广度优先搜索可以求出两点之间的最短路径。所以进行n2遍深度或广度优先搜索,即对每两个点都进行一次深度或广度优先搜索,便可以求得任意两点之间的最短路径。可是还有别的方法:Floyd-Warshall算法、Dijkstra算法等。请分别使用这两种算法求取任意两个城市到达的最短路径。允许通过所有顶点作为中转。

2023-06-06 上传