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指针滑动。在白纸上编写时我忽略了这步。

  • 相关阅读:
    Activity 启动模式
    Android 网络编程之Http通信
    android的消息处理机制(图+源码分析)——Looper,Handler,Message
    Android 之 ListView使用SimpleAdapter展示列表
    android 滑动翻页手势实现
    android 数据存储之SharedPerferences
    回忆Java 之 文件读写及性能比较总结
    成长,没你想象的那么迫切!
    杂想程序员
    android 数据存储之SQLite
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8452028.html
Copyright © 2011-2022 走看看