#encoding=utf8
class LNode:
def __new__(self, x):
self.data = x
self.next = None
def FindFirstCommonNode(pHead1, pHead2):
# write code here
while not pHead1 or not pHead2:
return None
len1 = 0
len2 = 0
pNode1 = pHead1
pNode2 = pHead2
# 先计算长度
while pNode1:
len1 += 1
print pNode1.next.data
pNode1 = pNode1.next
while pNode2:
len2 += 1
pNode2 = pNode2.next
# 较长的链表先移动
while len1 > len2:
pHead1 = pHead1.next
len1 -= 1
while len2 > len1:
pHead2 = pHead2.next
len2 -= 1
# 两个链表同时移动
while pHead2 and pHead1:
if pHead2 == pHead1:
break
else:
pHead2 = pHead2.next
pHead1 = pHead1.next
return pHead2
if __name__=="__main__":
head1=LNode()
head1.next=None
tmp=None
cur=head1
i=2
while i<=10:
tmp=LNode()
tmp.next=None
tmp.data=i
cur.next=tmp
cur=tmp
i+=1
head2=LNode()
head2.next=None
tmp=None
cur=head2
i=5
while i<=10:
tmp=LNode()
tmp.next=None
tmp.data=i
cur.next=tmp
cur=tmp
i+=1
FindFirstCommonNode(head1,head2)
两个链表的第一个公共结点
最新推荐文章于 2021-03-23 01:42:34 发布