顺序表合并

#include<iostream>  
using namespace std;  
typedef struct LNode          //定义单链表  
{  
  int data;  
  struct LNode *next;  
}LNode,*LinkList;  
void InitList_L(LinkList &L)        //创建单链表  
{  
  L=new LNode;  
  L->next=NULL;  
}  
void input(LinkList &L,int n)        //依次往单链表L里输入数据  
{  
  int i;  
  LinkList p,r;  
  r=L;  
  cout<<"请输入该表的元素(按非递减的顺序):";  
for(i=0;i<n;i++)  
{  
  p=new LNode;  
  cin>>p->data;  
  p->next=NULL;  
  r->next=p;  
  r=p;  
}  
}  
void output(LinkList L)          //依次输出单链表里的每个元素  
{  
  int i=0;  
  LNode *p;  
  p=L->next;  
while(p)  
{  
  if(i)  
    cout<<",";  
  cout<<p->data;  
  p=p->next;  
  i=1;  
}  
}  
void MergeList_L(LinkList &LA,LinkList &LB,LinkList &LC)  //链式有序表的合并  
{  
    LinkList pa,pb,pc;  
pa = LA->next;  
    pb = LB->next;  
    LC = LA;  
    pc = LC;  
    while(pa&&pb)  
    {  
    if(pa->data >= pb->data)  
    {  
      pc->next = pb;  
      pc = pb;  
      //pb++;   
      pb = pb->next;  
  }  
  else  
  {  
    pc->next = pa;  
    pc = pa;  
  // pa++;  
    pa = pa->next;  
  }  
  }   
  pc->next = pb?pb:pa;  
  delete LB;  
} //MergeList_L()  
/* 插入  */       
int main()  
{  
  LinkList La,Lb,Lc;  
  int num_a,num_b;  
  int e;  
  cout<<"请输入非递减单链表a的个数n:";   
  cin>>num_a;   
  InitList_L(La);             //La表的创建  
  input(La,num_a);            //依次往单链表La里输入数据  
cout<<"请输入非递减单链表b的个数n:";   
  cin>>num_b;  
  InitList_L(Lb);             //Lb表的创建   
  input(Lb,num_b);            //依次往单链表La里输入数据    
  InitList_L(Lc);  
  MergeList_L(La,Lb,Lc); //将单链表La和Lb进行合并  
    cout<<"非递减单链表a,b合并后的非递减单链表c为:\n";//输出合并后的单链表Lc  
  output(Lc);  
  cout<<endl;  
  return 0;  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值