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

本文介绍了一个使用C语言实现的链表操作程序,包括创建排序链表和合并两个已排序链表的功能。通过示例代码详细展示了如何进行链表元素的插入、遍历及合并,并确保合并后的链表依然有序。
}#include
typedef struct Node{
int a;
Node *next;
}Node,*linklist;
void dislist(linklist &L){//输出链表。
Node *p1=L->next;
while(p1!=NULL){
printf("%d  ",p1->a);
p1=p1->next;
}
printf("\n");
}
void create(linklist &L){//输入链表并按从小到大排序。
Node *pre,*q,*s;
int n,k;
    L=new Node;
L->next=NULL;
while(scanf("%d",&k)!=EOF&&k){//控制输入,当输入0时该链表的输入结束。
       s=new Node;
s->a=k;
pre=L;
q=L->next;
      while(q&&q->aa){//从表头开始检索,在第一个比它大的数前面插入s。
pre=q;
q=q->next;
}
s->next=q;
pre->next=s;
}
    
}
int main(){
    linklist pa,pb;
Node *p1,*p2,*p3,*r;
printf("printf pa:");
create(pa);
printf("printf pb:");
create(pb);
p1=pa->next;
p2=pb->next;
p3=pa;
   while(p1&&p2){
if(p1->a==p2->a){//如果两个数相同则去pa链表中的数。
p3->next=p1;
p3=p1;
p1=p1->next;
          r=p2;
p2=p2->next;
delete r;
}
else if(p1->aa){
              p3->next=p1;
    p3=p1;
   p1=p1->next;
}
else{
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
p3->next=p1?p1:p2;//其中一个 链表为空后,p3指向非空的一个链表。
delete pb;
dislist(pa);
return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值