posts - 7, comments - 5, trackbacks - 0, articles - 4

给出两个单向链表的头指针(如图3-8所示),比如h1h2,判断这两个链表是否相交。这里为了简化问题,我们假设两个链表均不带环。

分析与解法

这样的一个问题,也许我们平时很少考虑。但在一个大的系统中,如果出现两个链表相交的情况,而且释放了其中一个链表的所有节点,那样就会造成信息的丢失,并且另一个与之相交的链表也会受到影响,这是我们不希望看到的。在特殊的情况下,的确需要出现相交的两个链表,我们希望在释放一个链表之前知道是否有其他链表跟当前这个链表相交。

Feedback

# re: 编程之美-编程判断两个链表是否相交  回复  更多评论   

2009-03-23 16:50 by 陈梓瀚(vczh)
先看一下两条链表有多长O(n),然后略过差O(n),然后一对一对检查O(n)。

或者用smart_ptr

# re: 编程之美-编程判断两个链表是否相交  回复  更多评论   

2009-03-23 17:06 by 阿呆
有道理~我就没想到这种办法~

不过 smart_ptr怎么做?

# re: 编程之美-编程判断两个链表是否相交  回复  更多评论   

2009-03-23 17:12 by 陈梓瀚(vczh)
class Node
{
Node(){};
public:
static smart_ptr<Node> Create(){return new Node;}
int data;
smart_ptr<Node> next;
};

不连成环就行。

# re: 编程之美-编程判断两个链表是否相交  回复  更多评论   

2009-03-24 09:34 by maosher
嗯,有道理,智能指针就行

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理