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

本文介绍了一种使用递归方式实现的链表降序合并算法。该算法通过比较两个链表头部元素的大小来决定合并后的链表顺序,并递归地处理剩余元素,最终形成一个完整的降序链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非递归算法应该不难,用递归的思想也能完成这个工作。
  1. /***********************************
  2. *
  3. *链表降序排列
  4. *Author:ckh
  5. *
  6. ************************************/

  7. node * mergelink(node *head1 , node *head2){
  8.     node *tmp=NULL;
  9.     //如果两个指针都为空,则结束执行
  10.     if(head1 == NULL && head2 == NULL) 
  11.         return tmp;
  12.     //如果一个链表为空,则只要返回另一个链表剩下部分的第一个节点即可
  13.     else if (head1 == NULL)
  14.         return head2;
  15.     else if (head2 == NULL)
  16.         return head1;
  17.     else{
  18.         //如果两个指针均不为空,则递归处理
  19.         if(head1 -> data > head2 ->data){
  20.             tmp = head1;
  21.             tmp -> next =mergelink(head1 -> next , head2);
  22.         } else {
  23.             tmp = head2;
  24.             tmp -> next =mergelink(head1 , head2 -> next);
  25.         }
  26.     return tmp;
  27. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值