14.两表公共元素产生新表

问题

分析

1.题目有要求,不能破坏ab节点,所以只能创建新表

1.先找到两表相同的元素,再进行尾插法插入到链表c中

找相同的元素,在while(pa!=NULL&&pb!=NULL)给a设置p,给b设置q,判断p是否等于q

因为a、b表都是递增有序序列,所以可以设置三种情况,如果a的数值小于b,让a遍历到下一个值,再跟b比较;如果b的数值小于a,让b遍历下一个再跟a比较。如果a的数值等于b,建立新节点s,使其尾插到表c中

?若a和b一个表长一个表短?可以让未完结的那个再遍历对比一遍短的那个表while(pb!=NULL)

LinkList Create_Common(LinkList A,LinkList B)//不改变ab节点,只用传入就行,不用引用
{
    LNode *p=A->next,*q=B->next;
    LNode *r;//尾插法用尾指针r,再定义一个c的头结点
    LinkList C=(LinkList)malloc(sizeof (LNode));//建新表一定要置空
    C->next=NULL;
    r=C;
    while(p!=NULL&&q!=NULL){
        if(p->data>q->data){
            q=q-next;
        }else if(p->data<q->data){
            q=q->next;
        }else{
            s=(LNode*)malloc(sizeof(LNode));//建立节点,也是要插入c表的节点
            s->data=p->data;//把p的数值赋给它
            r-next=s;//尾插法
            r=s;
            p=p->next;
            q=q->next;
        }
        r-next=NULL;//尾插法一定要给尾指针置空
        return C;
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值