c语言考试 优先队列的实现方式?
浏览量:2784
时间:2021-03-14 20:22:59
作者:admin
优先队列的实现方式?
通常使用堆数据结构来实现
队列用于宽度优先,堆栈用于深度优先。简要描述如下:
广度优先:将节点添加到队列时,应将其标记为已遍历。在遍历过程中,对于队列的第一个元素,它应该遍历一步中可以到达的所有节点。如果它被标记为未遍历,则应将其添加到队列中。从第一个元素开始,遍历后将列出一步中可以到达的所有节点。
深度优先:遍历节点a时,如果标记为未遍历,则将其放在堆栈上,并遍历一步即可直接到达的节点。如果标记为未遍历,则将其放在堆栈上并标记为已遍历,然后执行类似于A的操作。否则,找到一步可以直接到达的节点并执行类似的操作。在遍历一个步骤中可以直接到达的所有节点之前,a将从堆栈中退出。
使用“一步可到达的节点”而不是“相邻节点”时,会考虑到有向图因素。
您可以找到特定的图形,然后使用广度和深度算法再次搜索。您可以在每个步骤手动修改队列和堆栈,以了解发生了什么。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。