单链表链表归并

本文介绍了如何通过算法将两个递增有序的单链表合并为一个非递减有序链表。具体方法是使用指针p和q遍历两个链表,比较节点值,将较小值放入新的辅助链表C中,直到遍历完任一链表,再将另一链表剩余部分追加到C链表尾部。该算法实现了链表的高效合并。
摘要由CSDN通过智能技术生成

【问题】

将两个递增有序的单链表设计算法成一个非递减有序的链表

【思路】

从前往后依次比较链表A,B当前元素的值,用指针p和q表示指向的结点。如果A<B,那么将A此时的值存入辅助链表C当中,指向A的指针p向后移;如果B<A,那么将B中的值存入辅助链表C当中,指向B的指针q向后移。直至任意一方到链表尾,将另一方剩余的元素全部放到C链表尾部

int merge(LNode *A,LNode* B,LNode* &C){
    LNode* p=A->next;
    LNode* q=B->next;
    C = A;
    C->next = 0;
    r = C;
    while(p!NULL && q!NULL){
        if(p->data <= q->data){
            r->next = p;
            p = p->next;
            r = r->next;
        }
        else{
            r->next = q;
            q = q->next;
            r = r->next;
        }
    }
    r-next = NULL;
    if(p!=NULL) r->next = p;
    if(q!=NULL) r->next = q;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值