按照从小到大的顺序合并链表
def read(data,head):
tmp=head #这里tmp代替指针
while tmp!=-1:
print(a[tmp][0],end=" ")
tmp=a[tmp][1]
print()
a=[[1,1],[3,2],[4,3],[8,4],[16,-1]] #链表A
b=[[2,1],[5,2],[7,3],[10,4],[15,-1]] #链表B
heada=headb=0 #头节点都为0
ka=kb=qa=0
while kb!=-1 and ka!=-1: #当没遍历完时
if a[ka][0]>b[kb][0]: #判断是否需要插入(如果a的当前项>b的当前项,就要在a的当前项前插入b的当前项)
if ka==heada: #判断是否为头节点,如果是就是头节点插入,不是就是普通节点插入
a.append([b[kb][0],heada])
heada=len(a)-1
else: #普通节点插入
a.append([b[kb][0],ka])
a[qa][1]=len(a)-1
qa=len(a)-1 #插入节点之后把a的前驱指针指向
kb=b[kb][1] #b的指针下移
else: #否则就a的指针下移
qa=ka
ka=a[ka][1]
while kb!=-1:
a.append([b[kb][0],ka]) #把b中剩余的全部加入a
a[qa][1]=len(a)-1
qa=len(a)-1 #也可以写成qa=a[qa][1]
kb=b[kb][1]
read(a,heada) #遍历