现在的位置: 首页 > 综合 > 正文

两个链表初始化之后合并

2012年06月04日 ⁄ 综合 ⁄ 共 903字 ⁄ 字号 评论关闭

 

#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;
}

抱歉!评论已关闭.