判断单链表是否有环以及两个有环的单链表是否相交

1.如何判断一个单链表是否有环?如果有环,求出环的入口节点

  思想:用两个指针p1,p2同时指向链表的头部,p1一次移动一步,p2一次移动两步;

    如果最终p1和p2重合则说明链表有环,如果p2走到空指针(链表的结尾)则说明链表无环。

    如果最终p1和p2重合,使p2重新指向链表的头结点,然后p1和p2同时一次移动一步,当p1和p2再次重合时该节点指针就是环的入口节点指针。

2.如何判断两个有环的单链表是否相交?

  首先将其中一个链表list1首尾相接,变成一个有环链表,

  如果另一个链表list2和list1相交的话,list2也将成为一个有环链表,并且环的入口节点就是两个链表的交叉节点。如果两个链表不相交,则list2依然是一个无环链表。

  

  参考:http://blog.csdn.net/piaojun_pj/article/details/5965298

posted @ 2012-05-08 14:46  iavailable  阅读(260)  评论(0编辑  收藏  举报