zoukankan      html  css  js  c++  java
  • 链表 | 将递增有序的两个链表的公共元素合并为新的链表

    王道P38T14

    主代码:

    LinkList common_subList(LinkList &A,LinkList &B){
        LNode *C=new LNode,*pC=C;
        C->next=NULL;
        LNode* pA=A->next,*pB=B->next;
        while(pA!=NULL && pB!=NULL){
            if(pA->data < pB->data){
                pA=pA->next;
            }else if(pA->data == pB->data){
                pC->next=new LNode;
                pC->next->data=pA->data;
                pC=pC->next;
                pC->next=NULL;
                pA=pA->next;
                pB=pB->next;
            }else{
                pB=pB->next;
            }
        }
        return C;
    } 

    完整代码:

    #include <cstdio>
    #include <stdlib.h>
    
    using namespace std;
    
    typedef struct LNode{
        int data;
        struct LNode* next=NULL; 
        LNode(){    }
        LNode(int x){    
            data=x;
        }
    }LNode;
    
    typedef LNode* LinkList;
    
    LinkList  build_list(int * arr,int n){
        int i;
        LinkList L=new LNode;
        LinkList pre=L;
        for(i=0;i<n;i++){
            LinkList p=new LNode(arr[i]);
            pre->next=p;
            pre=p;
        }
        return L;
    }
    
    void show_list(LinkList& L){
        LinkList p=L->next;
        while(p){
            printf("%d ",p->data);
            p=p->next;
        }
        puts("");
    }
    
    LinkList common_subList(LinkList &A,LinkList &B){
        LNode *C=new LNode,*pC=C;
        C->next=NULL;
        LNode* pA=A->next,*pB=B->next;
        while(pA!=NULL && pB!=NULL){
            if(pA->data < pB->data){
                pA=pA->next;
            }else if(pA->data == pB->data){
                pC->next=new LNode;
                pC->next->data=pA->data;
                pC=pC->next;
                pC->next=NULL;
                pA=pA->next;
                pB=pB->next;
            }else{
                pB=pB->next;
            }
        }
        return C;
    } 
    
    int main(){
        int A_arr[5]={1,2,3,5,9};
        int B_arr[5]={0,2,2,6,9};
        LinkList A=build_list(A_arr,5);
        LinkList B=build_list(B_arr,5);
        LinkList C=common_subList(A,B);
        show_list(A);
        show_list(B);    
        show_list(C);
    }
     
    View Code

    注意:

    要注意紫色代码处的pC指针滑动。在白纸上编写时我忽略了这步。

  • 相关阅读:
    REST论文原文
    Rest无状态的一点理解(转)
    Kafka入门
    C#中@的用法总结(转)
    反应器(Reactor)用于事件多路分离和分派的体系结构模式
    数据库的脏读、不可重复读、幻读
    面向对象执行过程内存分析
    基于oracle的sql优化
    深入理解Spring中bean的生命周期
    Spring 框架原理
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8452028.html
Copyright © 2011-2022 走看看