默认为不带环链表,若带环则延伸为判断链表是否带环,若带环,求入口点看看两个链表相交到底是怎么回事吧,有这样的的几个事实:(假设链表中不存在环)
(1)一旦两个链表相交,那么两个链表中的节点一定有相同地址。
(2)一旦两个链表相交,那么两个链表从相交节点开始到尾..
分类:
其他好文 时间:
2016-04-03 20:29:05
阅读次数:
239
第7题 微软亚院之编程 判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。 为了简化问题,我们假设俩个链表均不带环。 问题扩展: 1.如果链表可能有环列? 2.如果需要求出俩个链表相交的第一个节点列? 思路: 判断两个链表是否相交,并且求第一个节点列(无环)。
分类:
编程语言 时间:
2016-03-10 18:43:05
阅读次数:
192
问题描述: 有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。? 如何判断一个链表是不是这类链表?? 问题扩展:? 如果链表可能有环呢? 如果需要...
分类:
其他好文 时间:
2015-11-04 13:19:28
阅读次数:
227
1 假设两个链表都没有环解题思路a. 直接循环判断第一个链表的每个节点是否在第二个链表中。但,这种方法的时间复杂度为O(Length(h1) * Length(h2))。显然,我们得找到一种更为有效的方法,至少不能是O(N^2)的复杂度。b. 针对第一个链表直接构造hash表,然后查询hash表,判...
分类:
其他好文 时间:
2015-09-04 22:20:47
阅读次数:
176
我们学一个算法,一定是为了用吧,所谓“学以致用”吗?那么判断两个链表是否相交有什么用呢?这是因为一旦两个链表出现相交的情况,就可能发生这样的情况,程序释放了链表La的所有节点,这样就导致了另外一个与之有相交节点的链表Lb中的节点也释放了,而Lb的使用者,可能并不知道事实的真相,这会带来很大的麻烦。1...
分类:
其他好文 时间:
2015-08-28 10:53:54
阅读次数:
383
解法一:
判断第一个链表的每个节点是否在第二个链表中,O(M*N);
解法二:
对第一个链表的节点地址hash排序,建立hash表,然后对第二个链表的每个节点的地址查询hash表,如出现,相交
时间复杂度O(M+N),空间复杂度O(M)。
解法三:
把第二个链表接在第一个链表后面,得到的链表有环,相交,否则,不相交。‘
第二个链表的表头一定在环上,只需从第二个链表开始...
分类:
其他好文 时间:
2015-04-27 23:44:50
阅读次数:
131
解决方案:1.找出链表1的环入口节点a1,链表2的环入口节点a2;2.如果a1=a2; 说明两个链表可能在入环之前或者入环第一个节点相交;将a1,a2作为两个链表的最后一个节点,转化为不带环的链表相交;其实在这种情况下已经说明两个链表已经相交了。3.如果a1!=a2;以a1为基准节点进行while循...
分类:
其他好文 时间:
2015-04-15 23:14:40
阅读次数:
247
1---2---3 ---4---5---6---711---12---链表1:1---2---3---4---5---6---7链表2:11---12---4---5---6---7解决方案:1.直接将链表1中的节点与链表2中的节点进行比较;如果存在相同的则相交。缺点:效率慢。2.将链表1建...
分类:
其他好文 时间:
2015-04-15 22:52:35
阅读次数:
124
由于单链表的特殊性,如果某一链表与另一链表相交,那么从相交的节点开始,以后两个链表的每个节点都相同,因此判断两个链表是否相交,只需判断每条链表的最后一个节点是否相同即可!#include "stdafx.h"
#include
using namespace std;struct list_node
{
int data;
list_node* next;
};...
分类:
其他好文 时间:
2015-03-20 23:50:57
阅读次数:
315
首先,判断一个链表是否有环?对于这个问题:可以用两个指针,刚开始都指向头节点,然后一个指针每次向后移一步,另一个指针每次向后移两步,如果最后移两步的指针为空时,说明无环,如果最后两个指针相等,说明有环。如果把第一指针看成静止,则相当于第二个每次走一步,所以在那个环上时,是一定能相遇的。如何找到这个链...
分类:
其他好文 时间:
2014-12-12 11:26:48
阅读次数:
125