两个链表初始化之后合并

 

#include <iostream>
using namespace std;
typedef struct node{
 int data;
 struct node *next;
}Lnode,*Linklist;
Linklist A,B,C;
Linklist init_linklist()
{
 Lnode *s,*r,*L;
 L=new Lnode;
 L->next=NULL;
 r=L;
 int x;
 cout<<"请输入数据,否则输入-1结束数据的输入!\n";
 cin>>x;
 while(x!=-1){
  s=new Lnode;
  s->data=x;
  r->next=s;
  r=s;
  cout<<"请输入数据,否则输入-1结束数据输入!\n";
  cin>>x;
 }
 r->next=NULL;
 return L;
}
Linklist combine(Lnode *A,Lnode *B){
 Lnode *pa,*pb,*s;
 C=A;
 s=C;
 pa=A->next;
 pb=B->next;
 while(pa&&pb){
  if(pa->data<=pb->data){
   s->next=pa;
   s=pa;
   pa=pa->next;

  }
  else{
   s->next=pb;
   s=pb;
   pb=pb->next;
  }
 }
 if(pa)
  s->next=pa;
 else
  s->next=pb;
 return C;
}
void output(Linklist p){
 while(p->next){
  cout<<p->next->data<<",";
  p=p->next;
 }
}
void main(){
 A=init_linklist();
 cout<<"链表A如下所示:"<<endl;
 output(A);
 cout<<endl;
 B=init_linklist();
 cout<<"链表A如下所示:"<<endl;
 output(B);
 cout<<endl;
 C=combine(A,B);
 cout<<"A和B合并后如下所示:"<<endl;
 output(C);
 cout<<endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值