两个单链表,可能相交,也可能不相交。如果相交,则从交点开始,合并为一个链表。设计一个算法那,判断两个链表是否相交,如果相交,求出相交的第一个结点。以下哪种说法正确()。
11 查阅
两个单链表,可能相交,也可能不相交。如果相交,则从交点开始,合并为一个链表。设计一个算法那,判断两个链表是否相交,如果相交,求出相交的第一个结点。以下哪种说法正确()。
A.可采用以下算法实现:第一步:先将两个链表各自遍历一遍,统计出两个单链表的长度m和n。假设m>n,k=m-n第二步:长链表先走k步:用指针p从长链表头开始,先走k步,此时p指向长链表的第k+1个结点。第三步:q从短链表头开始,和p一起走。p和q相等时,即为交点;如果p和q不相交,则两个链表不相交。
B.可采用以下算法实现:第一步:用两个指针p和q,分别从两个链表头开始,向后走。第二步:如果两个指针相等,即指向同一个结点,则说明相交,该结点就是交点。
C.可采用以下算法实现:第一步:将两个链表分别逆置。第二步:从头开始,什么时候链表分叉,该分叉的结点就是相交的结点。
D.该问题无法求解。
参考答案: