判断链表是否有环

2017-12-10  本文已影响0人  水欣

如何判断一个链表是否有环?

1.png

判断两个链表是否交叉并找出交点

2.png
  1. 判断是否交叉
    先遍历第一个链到它的尾部,然后将尾部的next指针指向第二个链表,这样两个链表就合成了一个链表,判断原来的两个链表是否相交也就转变成了判断新的链表是否有环的问题:即判断单链表是否有环?


    3.gif

这种方法可以判断两个链表是否相交,但是不容易找出他们的交叉点

  1. 找出交点
    仔细研究两个链表,如果它们相交的话,那么它们最后的一个交点一定是相同的,否则不相交的。因此判断两个链表相交就很简单了,分别遍历到两个链表的尾部,然后判断它们是否相同,如果相同,则相交;否则不相交


    4.gif

    判断出两个链表相交后。假设第一个链表长度为len1,第二个为len2,然后找出长度最长的,让长度较长的建表先前移动|len1-len2|,然后再开始遍历两个链表,判断节点是否相同即可。

上一篇下一篇

猜你喜欢

热点阅读