博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 — 图 之 拓扑排序 (AOV网)
阅读量:1985 次
发布时间:2019-04-27

本文共 1346 字,大约阅读时间需要 4 分钟。

【度娘说】:

对一个(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个得到该集合上的一个,这个操作称之为拓扑排序。

【实现】:

/*input:6 80 10 20 31 42 42 53 43 5output:V0 V3 V2 V5 V1 V4 */#include
#include
using namespace std;#define EleType int#define MAX_NUM 100typedef struct node { EleType v; struct node *next;}NodeType,*NodePointer;typedef struct { int idegree; NodePointer next;}GNode,*GPointer;GNode graph[MAX_NUM];int vn,en; //顶点数和边数void CreatG() { EleType et1,et2; NodePointer tail; cin>>vn>>en; for(int i = 0; i
>et1>>et2; NodePointer np = new NodeType; np->v = et2; np->next = NULL; if(graph[et1].next == NULL) { graph[et1].next = np; }else { tail = graph[et1].next; while(tail->next != NULL ) { tail = tail->next; } tail->next = np; } graph[et2].idegree++; }}void TopSort() { int n,m; int top; NodePointer np; top = -1; for(int i = 0; i
next) { m = np->v; graph[m].idegree--; if(graph[m].idegree == 0) { graph[m].idegree = top; top = m; } } } } cout<

你可能感兴趣的文章
【PlatON三大银河战役之合约抢滩登陆战开战!】
查看>>
【图学院】区块链与密码学全民课堂第1-1讲:比特币的诞生
查看>>
【图学院】区块链与密码学全民课堂第1-2讲:“疯狂”的比特币
查看>>
【图学院】区块链与密码学全民课堂第1-3讲:比特币的通俗故事
查看>>
【图学院】区块链与密码学全民课堂第1-4讲:比特币的交易
查看>>
【图学院】区块链与密码学全民课堂第1-5讲:比特币的交易
查看>>
【图学院】区块链与密码学全民课堂第1-6讲:分叉大战
查看>>
【图学院】区块链与密码学全民课堂第1-7讲:密码货币 集结!
查看>>
“国内人脸识别第一案”开庭 数据隐私再至风口浪尖
查看>>
看看“科技春晚”苹果WWDC大会都讲了哪些数据隐私保护的事儿?
查看>>
邹传伟:作为信息互联网的区块链 | 云图思潮
查看>>
【图学院】区块链与密码学全民课堂第2-1讲:理解区块链竟如此简单?
查看>>
TensorRT使用过程中的问题记录1
查看>>
python-opencv将图片合成视频
查看>>
Background-Matting背景替换模型
查看>>
OKHttp基本用法
查看>>
Android之项目命名规则
查看>>
Android之AsyncTask机制篇
查看>>
retrofit+MVP开发
查看>>
Android SQLite基本用法
查看>>