递归合并两链表:LinkList:Merge Two Lists using recursive method

// LinkList.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
using namespace std;

typedef struct _node
{
 int val;
 struct _node* next;

}Node;

 Node* MergeTwo(Node* h1,Node* h2)
 {
   Node *h,*a,*b;
   h=new Node();
   Node* pre=h;
   a=h1;
   b=h2;
  if(a&&b)
   {
    if(a->val>b->val)
    {
    pre->next=a;
    pre=pre->next;
    pre->next=MergeTwo(a->next,b);
    }
    else
    {
    pre->next=b;
    pre=pre->next;
    pre->next=MergeTwo(a,b->next);
    }
   }
   if(!a)
   pre->next=b;
   if(!b)
    pre->next=a;
   return h->next;
 }
int _tmain(int argc, _TCHAR* argv[])
{
 int m=4;
  Node* head=(Node*)malloc(sizeof(Node));
   head->val=0;
   head->next=NULL;
   for(int i=1;i<=4;i++)
   { 
    Node* n=(Node*)malloc(sizeof(Node));
   n->val=i;
   n->next=head;
   head=n;
   }
  
   Node* head2=new Node();
   head2->val=10;
   head2->next=NULL;
   Node* p2=head2;
    for(int i=9;i>4;i--)
   { 
    Node* n=(Node*)malloc(sizeof(Node));
   n->val=i;
   n->next=NULL;
   p2->next=n;
   p2=p2->next;
   }
   Node *tmp=MergeTwo(head,head2);
   while(tmp)
   {
    cout<<tmp->val<<" ";
    tmp=tmp->next;
   }
  
   cin.get();
 return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值