非递归算法应该不难,用递归的思想也能完成这个工作。
-
/***********************************
-
*
-
*链表降序排列
-
*Author:ckh
-
*
-
************************************/
-
-
node * mergelink(node *head1 , node *head2){
-
node *tmp=NULL;
-
//如果两个指针都为空,则结束执行
-
if(head1 == NULL && head2 == NULL)
-
return tmp;
-
//如果一个链表为空,则只要返回另一个链表剩下部分的第一个节点即可
-
else if (head1 == NULL)
-
return head2;
-
else if (head2 == NULL)
-
return head1;
-
else{
-
//如果两个指针均不为空,则递归处理
-
if(head1 -> data > head2 ->data){
-
tmp = head1;
-
tmp -> next =mergelink(head1 -> next , head2);
-
} else {
-
tmp = head2;
-
tmp -> next =mergelink(head1 , head2 -> next);
-
}
-
return tmp;
- }