微软面试(or电面)试题——如何判断一个单链表是否存在回路
首先,我们想一下:如果单链表中有回路,它会是什么样子的?回答这个问题,需要知道,如果,我们把next指针看成是一个有向边,结点看成是图的vertex,那么,对于每个node,其out-degree=1.所以,对于有cyle的单链表,其“模样”必然为这个样子:红色的部分都是不可能出现的,因为,如果出现了,红色和黑色“交界”处的那个node的out-degree就不是1!!!(proof by contradiction)以上是其大致的形状,然后,我们考虑,如何解决这个问题呢?一个已知的解法是,设置两个poin
原创
2010-08-19 09:42:00 ·
2130 阅读 ·
1 评论