数据结构与算法 - 链表
有两个单向链表(链表长度分别为 m,n),这两个单向链表有可能在某个元素合并,如下图所示的这样,也可能不合并。现在给定两个链表的头指针,在不修改链表的情况下,如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的 x 元素。
请用(伪)代码描述算法,并给出时间复杂度和空间复杂度。
链表(链式存储的线性表)是指采用一组地址任意的存储单元存放线性表中的数据元素。
单链表:
循环链表:将上面单链表的尾节点的next指针改为头节点,此链表就变成循环链表。
上面的问题结合单链表的结构:
方法一:在第一个链表上顺序遍历每个结点,每遍历到一个结点时,在第二个链表上顺序遍历每个结点,时间复杂度是o(m*n)
方法二:假设m>n 先让长的链表先走相差的数,然后一起走,找到第一个相同的结点就是所求结果 时间复杂度o(m)
版权声明: 本文为 InfoQ 作者【阿飞】的原创文章。
原文链接:【http://xie.infoq.cn/article/3de5ba1879d15cca88886ed6a】。文章转载请联系作者。
评论