试回答下列关于拓扑排序算法的问题。 (1)算法中利用一个栈保存入度为0的顶点,其目的是什么? (2)若在算法中将队列改为栈,相应地将入、出栈及判栈空操作改为入、出队列和判队列空操作,其他部分不变,是否依然能够得到拓扑排序时正确结果?
【正确答案】:(1)每次选择入度为0的顶点时,只需要做出栈操作就可以了,减少找入度为0的顶点的时间,提高排序的效率。(2)每次选人度为零的顶点时,只需做出栈(队)操作即可。所以把栈换成队列同样可以实现。
【题目解析】:教材164页,拓扑排序实际就是对临接表的遍历,每次访问一个入度为0的顶点。设一个栈暂存所有入度为0的顶点,每次选择入度为0的顶点时,只需要做出栈操作就可以了,减少找入度为0的顶点的时间,提高排序的效率。栈或队列的作用就是暂存所有入度为零的顶点:在开始排序前,扫描对应的存储空间,将入度为零的顶点均入栈(队)。以后每次选入度为零的顶点时,只需做出栈(队)操作即可。所以把栈换成队列同样可以实现。
试回答下列关于拓扑排序算法的问题。 (1)算法中利用一个栈保存入度为0的顶点,其目的是什么? (2)若在算法中将队列改为栈,相应
- 2024-08-04 00:30:51
- 数据结构(02331)