下载此文档

数据结构重点概要.doc


文档分类:高等教育 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
数据结构重点概要.doc顶点i的直接后驱.
例如:?这个问题可以被看成是一个大的工程,在此工程中,.
计算机专业的课程设置及其关系
课程代码
课程名称
先修课程代码
C1
高等数学

C2
程序设计基础

C3
离散数学
C1 C2
C4
数据结构
C2 C3
C5
算法语言
C2
C6
编译技术
C4 C5
C7
操作系统
C4 C9
C8
普通物理
C1
C9
计算机原理
C8
从表中可以看出,C1、C2 是独立于其它课程的基础课,而有的课却需要有先修课程,比如,学完程序设计基础和离散数学后才能学数据结构,,顶点表示课程, i为课程j 的先修课,则必然存在有向边〈i,j〉.
表示课程之间优先关系的有向无环图

在AOV网中,顶点线性序列如具有下列两个性质,则称之为拓扑有序序列,构造拓扑序列的过程称为拓扑排序.
⑴在AOV网中,若顶点i 优先于顶点j ,则在线性序列中顶点i仍然优先于顶点j;
⑵对于网中原来没有优先关系的顶点与顶点,,在线性序列中也建立一个先后关系,或者顶点i优先于顶点j ,或者顶点j 优先于i.
那么,怎样求一个AOV的拓扑序列呢?拓扑排序的方法和步骤是:
⑴从AOV网中选择一个没有前驱的顶点(该顶点的入度为0)并且输出它;
⑵从网中删去该顶点,并且删去从该顶点发出的全部有向边;
⑶重复上述两步,直到剩余的网中不再存在没有前驱的顶点为止.
这样操作的结果有两种:一种结果是网中全部顶点都被输出,这说明网中不存在有向回路;另一种结果是网中顶点未被全部输出,剩余的顶点均有前驱顶点,这说明网中存在有向回路.
,执行上述过程可以得到如下拓扑序列:
V1,V6,V4,V3,V2,V5 和 V1,V3,V2,V6,V4,V5
为了实现上述算法,对AOV网采用邻接表存储方式,并且邻接表中顶点结点中增加一个记录顶点入度的数据域,顶点表结点结构的描述改为:
typedef struct vnode{ /*顶点表结点*/
int count /*存放顶点入度*/
VertexType vertex; /*顶点域*/
EdgeNode * firstedge; /*边表头指针*/
}VertexNode;
算法中可设置一个堆栈,凡是网中入度为0 ,拓扑排序的算法步骤为:
①将没有前驱的顶点(count 域为0)入栈;
②从栈中退出栈顶元素输出,并把该顶点引出的所有有向边删去,即把它的各个邻接顶点的入度减1;
③将新的入度为0的顶点再入堆栈;
④重复②~④,,或者剩下的顶点中没有入度为0的顶点.
下面给出用C语言描述的拓扑排序算法的实现.
void Topo_Sort (AlGraph *G)
{/*对以带入度的邻接链表为存

数据结构重点概要 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人taotao0a
  • 文件大小107 KB
  • 时间2017-11-28