判断两个链表是否相交(不带环)

1---2---3

    ---4---5---6---7

11---12---

 

链表1:1---2---3---4---5---6---7

链表2:11---12---4---5---6---7

 

解决方案:

1.直接将链表1中的节点与链表2中的节点进行比较;如果存在相同的则相交。缺点:效率慢。

2.将链表1建立hash表;用链表2中的节点在hash表中进行查询;缺点:增加了内存消耗。

3.将链表1的尾节点指针指向链表2的头节点;转而进行链表是否有环判断;如果有环,则相交;

由于链表2的头节点必然在环中,可直接从链表2的头节点开始进行是否有环判断。

4.如果链表1与链表2相交;则两个链表的最后一个节点必然相同;可直接用两个链表的最后一个节点是否相同进行判断。

 

 

 

#2. 如果链表1和链表2相交,如何求出两个链表的第1个相交的节点?

解决方案:

假设链表1的长度为len1;链表2的长度为len2;则将长度较大的链表先移动abs(len1-len2);然后两个链表在同时进行遍历,

遇到第一个相同的节点即为第1个相交的节点。

 

posted @ 2015-04-15 21:53  hy1hy  阅读(214)  评论(0编辑  收藏  举报