递归合并两个有序链表为一个有序链表
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;
}
/***********************************
*
*链表降序排列
*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;
}
相关文章推荐
- 用递归方法实现两个链表head1和head2各自有序,请把它们合并成一个链表仍然有序。(c/c++)
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,要求用递归方法进行。
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,要求用递归方法进行。
- 链表操作(将两个链表合并成一个链表依然有序,非递归方法和迭代方法)
- 递归实现合并两个有序链表成一个链表依然有序
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。使用非递归方法以及递归方法。
- 合并两个有序链表形成一个新的有序链表
- 如何将两个有序链表合并成一个有序链表。
- 将两个非递减的有序链表合并为一个非递增的有序链表(C语言编程实现)
- 合并两个有序的链表为一个有序的链表
- 合并两个有序链表的递归与非递归
- 两个有序链表求差集,合并为一个有序链表
- [LeetCode]Merge Two Sorted Lists & Remove Duplicates from Sorted List 两个有序链表合并为一个&删除链表重复元素
- 将两个有序链表head1 head2,合并为一个链表
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
- 将两个递增有序的带头结点的单链表A、B合并成为一个递增有序的带头结点的单链表
- 对两个有序的链表进行合并成一个一个有序链表(递归方法)
- 链表面试题之合并有序的两个线性表-递归和非递归的方法
- 将两个有序链表合并成一个有序链表
- 每天一道LeetCode-----合并两个/多个有序链表为一个新链表