您的位置:首页 > 其它

递归合并两个有序链表为一个有序链表

2013-05-18 15:14 232 查看
非递归算法应该不难,用递归的思想也能完成这个工作。

/***********************************

*

*链表降序排列

*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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐