数据结构中 关于图拓扑排序算法 有个地方不太明白 希望能得到解答
我先把整个算法写下了吧
Status ToplogicalSort(ALGraph G){
//有向图G采用邻接表存储结构
//若G无回路,则输出G的顶点的一个拓扑序列并返回OK,否则ERROR.
FindInDegree(G,indegree); //对各顶点求入度indegree[0...vernum-1]
InitStack(S);
for(i =0;inextarc){
k=p-->adjevex
if(!(--indegree[k])) Push(S,k);//若入度减为0,则入栈
(终于码字码到这句了 我理解的是k是p指向的i的一个临界点,如果这个邻接点经过
--indegree入度减为0 则入栈 但是如果没减为0呢 --indegree[k]还要执行吗 我理解他是个条件啊 可是依照拓扑排序的思路 是要把i的邻接点入度都减1的)
}
}后面代码就不打了 主要是这一点 希望能解答下
人气:191 ℃ 时间:2020-07-17 04:53:11
解答
我知道你哪里不明白了,你没看见上面的for循环,1,如果不为0,则不执行if了,但执行for循环.2,执行for循环的目的就是把所有的入度减1,减为0的入栈.为什么执行for循环就是把所有邻接点的入度减1 啊?能解释下for这句的意思吗for(p=G.vertices[i].firstarc;p;p=p-->nextarc){k=p-->adjevex()里面表示什么意思?k不就是表示i的一个邻接点吗?怎么有入度减1的意思呢??谢谢啦~for循环的意思就是说把所有的以G.vertices[i]为孤尾结点的,所有狐头指向的结点的入度减1,把度数减为0的入栈。G.vertices[i].firstarc的意思是:图G中以第i个顶点结点的狐尾结点的第一个孤所指向的结点。p=p-->nextarc是以第i个顶点结点的狐尾结点的下一个顶点结点。这是邻接表的定义嘛。k就是表示i的一个邻接点,但只是一个,要把所有的以第i个顶点结点的狐尾结点所指向的结点的入度都减1才行啊。
推荐
- 数据结构题,叙述对有环无向图求拓扑排序序列的步骤 (2)写出下图的4个不同的拓扑排序序列麻烦解答,谢谢
- 数据结构题.有向图,给出该图的一种拓扑排序序列
- 英语翻译(英译汉)
- 在RLC串联电路中,已知I=1A,UR=15V,UL=80V,UC=60V.求电路的总电压?
- ( )you please give me a piece of advice?
- 设(G,*)是可交换群,a,b属于G,a和b都是2阶元素,证明(G,*)必有4阶子群
- 怎样有效地提高新GRE填空分数
- 求DNA连接酶和DNA聚合酶的异同
猜你喜欢
- concern一个简单英语题目
- 孔子说他三十而立,四十不惑,五十知天命,六十而耳顺,七十从心所欲,
- x减百分之二十五x等于21
- 英语翻译
- 动物的生命现象
- 作文 那一次我哭了急 !
- 一艘小船,最初在南岸,从南岸向北岸行驶,再从北岸驶回南岸,不断往返. ( 1 )这艘小船摆渡的次数为.
- 读了这篇短文,你有什么感受?(胜利的故事 80字)