3.6 编程判断两个链表是否相交

题目:编程判断h1、h2两个链表是否相交(为简单起见,假设两个链表不存在环)
 
解法1:将h1的各个节点地址进行hash,建立hash表,在hash表搜索h2的节点地址,若存在,则相交。
 
解法2:若h1,h2相交,那么自相交节点后所有的节点都为这两个链表共享。基于这个特点,直接判断h1、h2两个链表最后节点是否在同一地址即可。
 
解法3:由于两链表本身不存在环,我们可以把第二个链表接在第一个链表后,如果得到的链表有环,则说明这两个链表相交。这样,问题转化为判断变化后的链表是否存在环。(涨姿势了)
 
判断一个链表是否有环
  • 地址hash表法:bool a[x]表示地址为x的节点是否已经出现。遍历链表,每遍历一个节点,就将数组该位置标志为1,若发现该位置已被标志,则存在环。
  • 追尾法:设置两个指针slow、fast。slow每次前进一个节点,fast每次前进2个节点。若链表存在环,slow和fast必会相遇。
 
原文地址:https://www.cnblogs.com/icfnight/p/3278089.html