按照从小到大的顺序合并链表

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)                                   #遍历