【无标题】嚯哈哈哈哈哈

#include <iostream>

using namespace std;

 

typedef struct Node{

    int data;

    Node* next;

}node,*LinkList;

 

int main() {

    LinkList l1 = new node,l2 = new node,l3 = new node;

    l1->next = NULL;

    l2->next = NULL;

    l3->next = NULL;

 

    int x;

 

    node* p = l1;

 

    while((cin>>x)&&x!=-1){

        node* s = new node;

        s->data = x;

        s->next = NULL;

        p->next = s;

        p = p->next;

 

    }

    p = l2;

 

    while((cin>>x)&&x!=-1){

        node* s = new node;

        s->data = x;

        s->next = NULL;

        p->next = s;

        p = p->next;

 

    }

 

    p = l1->next;

    node* p2 = l2->next;

    node* p3 = l3;

 

 

    if(p==NULL){

        l3 = l2->next;

    }else if(p2==NULL){

        l3 = l1->next;

    }else{

 

    node* q = p->next;

 

    while(p&&q){//解决l1链表的相同元素问题,对重复项进行预先处理

        if(p->data == q->data){

            q = p->next;

            p->next = q->next;

            q = q->next;

 

        }else{

            p = p->next;

            q = q->next;

        }

    }

 

    q = p2->next;

    while(p2&&q){//解决l2链表的相同元素问题

        if(p2->data == q->data){

            q = p2->next;

            p2->next = q->next;

            q = q->next;

 

        }else{

            p2 = p2->next;

            q = q->next;

        }

    }

 

    p = l1->next;

    p2 = l2->next;

 while(p!=NULL&&p2!=NULL){

        if(p->data == p3->data)//排除l3和l1有重复的元素

            p = p->next;

        if(p2->data == p3->data)//排除l3和l2有重复的元素

            p2 = p2->next;

        if((p->data)<=(p2->data)){

            p3->next = p;

            p3 = p;

            p = p->next;

 

        }else{

            p3->next = p2;

            p3 = p2;

            p2 = p2->next;

        }

    }

 if(p){

        if(p->data!=p3->data)

            while (p) {

                p3->next = p;

                p = p->next;

            }

        else{

            p = p->next;

            while (p) {

                p3->next = p;

                p = p->next;

            }

        }

 

    }

// p3->next = p;

    else if(p2){

        if(p2->data!=p3->data)

            while (p2) {

                p3->next = p2;

                p2 = p2->next;

            }

        else{

            p2 = p2->next;

            while (p2) {

                p3->next = p2;

                p2 = p2->next;

            }

        }

    }

    }

    p3 = l3;

    p3 = p3->next;

    if(p3==NULL){

        cout<<"NULL";

    }else{

        while(p3!=NULL){

            if(p3->next == NULL)

                cout<<p3->data;

            else

                cout<<p3->data<<" ";

            p3 = p3->next;

        }

    }

    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值