列表

详情


92. 请问如何判断两个链表是否相交

回答思路

从头遍历两个链表。创建两个栈,第一个栈存储第一个链表的节点,第二个栈存储第二个链表的节点。每遍历到一个节点时,就将该节点入栈。两个链表都入栈结束后。则通过top判断栈顶的节点是否相等即可判断两个单链表是否相交。因为我们知道,若两个链表相交,则从第一个相交节点开始,后面的节点都相交。 若两链表相交,则循环出栈,直到遇到两个出栈的节点不相同,则这个节点的后一个节点就是第一个相交的节点。 node temp=NULL; //存第一个相交节点 while(!stack1.empty()&&!stack1.empty()) //两栈不为空 { temp=stack1.top(); stack1.pop(); stack2.pop(); if(stack1.top()!=stack2.top()) { break; } }

上一题