判断两个链表是否相交

来源:互联网 发布:足球滚球软件 编辑:程序博客网 时间:2024/06/07 11:28

链表无环

如果两个链表相交于某一节点,那么在这个相交节点之后的所有节点都是两个链表所共有的。也就是说,如果两个链表相交,那么最后一个节点肯定是共有的。先遍历第一个链表,记住最后一个节点,然后遍历第二个链表,到最后一个节点时和第一个链表的最后一个节点做比较,如果相同,则相交,否则不相交。时间复杂度为O( len1 + len2),因为只需要一个额外指针保存最后一个节点地址,空间复杂度为O(1)。

判断链表有无环

链表中有环,其实也就是自相交。我们用两个指针p1和p2从头开始遍历链表,p1每次前进一个节点,p2每次前进两个结点,若存在环,则p1和p2肯定会在环中相遇,若不存在,则p1和p2能正常到达最后一个节点(实际上是到达NULL)。

原创粉丝点击