单链表第十五题(求两链表交集)

15.已知两个链表A和B分别表示两个集合,其元素递增排序。

 编制函数,求A与B的交集,并存放于A链表中。

思路:

      交集就是公共元素,这题和上一题类似,可以作为参考 

/*

     已知两个链表A、B分别表示两个集合,其元素递增排列,

      编制函数,求A与B的交集,并存放于A链表中。

      分析:

                与上题类似,因为链表本身递增排序,我们可以设置两个指针,

      同时遍历A、B链表,同则保留,异则删除

*/

#include<sstdio.h>

#include<stdio.h>

#include"linkStruct.h"//通过自创建头文件引入结构体,ctrl+鼠标左键点击即可查看

 void  listCommon(Iink  *a,Link  *b){

        Link   *pA=a->next,   *pB=b->next,    *r,*la=a;//用la指向a,便可直接链在a后面

        la->next=NULL;

         while(pA&&pB){

                  if(pA->data==pB->data){

                         la->next=pA;

                         la=pA;

                         pA=pA->next;

                         pB=pB->next;

                     }

                       else{

                           pA->data<pB->data?pA=pA->next:pB=pB->next;

                             }

            }

           la->next=NULL;

}

int  main(){

            Link    *a,*b;

            Link      *createLink(Link   *);

            void      printfNowLink(Link   *);

             a=createLink(0);

             b=createLink(0);

             listCommon(a,b);

             printfNowLink(a);

             return   0; 

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值