# 声明类结点
class LNode():
def __init__(self):
self.data = None # 数据域
self.next = None # 指针域
# 创建单链表
def ConstructList(start):
i = start
head = LNode()
cur = head
while i<7:
temp = LNode()
temp.data = i
cur.next = temp
cur = temp
i += 2
return head
# 链表输出
def PrintList(head):
cur = head.next
while cur!=None:
print(cur.data, end=" ")
cur = cur.next
# 合并两个升序排列的单链表
def MergeList(head1, head2):
# 判断链表是否为空
if head1==None or head1.next==None:
return head2
if head2==None or head2.next==None:
return head1
cur1 = head1.next
cur2 = head2.next
# 合并后链表的头结点为第一个元素最小的那个链表的头结点
if cur1.data > cur2.data:
head = head2
cur = cur2
cur2 = cur2.next
else:
head = head1
cur = cur1
cur1 = cur1.next
# 每次找链表剩余结点的最小值对应的结点连接到合并后链表的尾部
while cur1!=None and cur2!=None:
if cur1.data<cur2.data:
cur.next = cur1
cur = cur1
cur1 = cur1.next
else:
cur.next = cur2
cur = cur2
cur2 = cur2.next
# 当遍历完一个链表后把另外一个链表剩余的结点链接到合并后的链表后面
if cur1!=None:
cur.next = cur1
if cur2!=None:
cur.next = cur2
return head
if __name__=="__main__":
head1 = ConstructList(1)
head2 = ConstructList(2)
# 输出链表1
PrintList(head1)
# 换行
print()
# 输出链表2
PrintList(head2)
print()
# 合并后的链表
head = MergeList(head1, head2)
print("合并后的链表为:")
PrintList(head)