思路:首先可以将降序排列的单链表反转,这样两个链表均为升序,再将两个升序排列的单链表合并成一个升序排列的单链表。于是这里我们需要解决两个问题:
Q1:如何将一个单链表反转?
A1:以一般情况为例,下图(a)是一个单链表,图(b)是对图(a)已经实现若干结点反转的单链表,下一步我们需要对结点i进行反转,我们发现反转结点i之前,需要保存结点i所指的下一个结点j,否则在对结点i反转完成后,链表发生断裂,我们无法再寻找到结点j,也就无法进行后续的反转,同时在反转之前,我们还需要直到当前反转结点i的上一结点h,以让i结点指向h结点。因此,这里我们需要三个链表指针,分别保存当前要反转的结点(不妨设为pCurrentNode),当前要反转的结点的前一结点(不妨设为pPreNode),当前要反转的结点的后一结点(不妨设为pNextNode),对当前结点i反转完成后,我们将pPreNode设为当前结点i,将当前结点pCurrentNode指向要反转的下一结点j,pNextNode指向结点k,重复执行上述过程,直到当前结点pCurrentNode为空,即完成整个链表的反转。