列出无环有向图的所有拓扑排序情况,要非递归的

jerry_baimor 2001-05-27 10:39:00
我已经做了个递归的,但非递归的还没做。谁做过?
能否告知?
...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
anjun 2001-06-27
  • 打赏
  • 举报
回复
把递归改成非递归还不简单吗?
自己好好想想吧
jucee 2001-05-30
  • 打赏
  • 举报
回复
先把所有入出度为0的结点连接起来,
然后取练表首结点为排序的第一个点.
删除所有与第一个点相连的边,把相临的点的出度减一,在把出度为0的点连到练表的末尾,重复上一步.
starfish 2001-05-27
  • 打赏
  • 举报
回复
每次选择一个入度为0的节点,将该节点和所有以该节点为弧头的弧删去,如果有多个入度为0的节点可以选择,则需要用堆栈记录以便回溯;重复下去直到所有的节点被删除完,删除节点的顺序就是拓扑排序顺序。你所谓的非递归是不是人工设置堆栈模拟递归?只要能够写出递归形式,利用cooper变换将其改成尾递归,然后很容易就写成循环的非递归形式了。如果不熟悉cooper变换查查关于程序等价变换的资料吧。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧