10.28学习总结

(1)今日安排
线性表A,B顺序存储合并
题目要求:有两张非递增有序的线性表A,B,采用顺序存储结构,两张表合并用c表存,要求C为非递减有序的,然后删除C表中值相同的多余元素。元素类型为整型
源代码如下:

#include<iostream>
#include<cstring>
using namespace std;
typedef struct fff{
    int data;
    fff* next;
}node,*Node;
void build(fff *p){
    int x;
    while(cin>>x,~x){
        fff *now=new node();
        now->data=x;
        now->next=p->next;
        p->next=now;
    }
}
void build(Node p1,Node p2,Node pre){
    p1=p1->next;
    p2=p2->next;
    while(p1!=NULL&&p2!=NULL){
        if(p1->data<=p2->data){
            Node now=new node();
            now->data=p1->data;
            now->next=pre->next;
            pre->next=now;
            pre=pre->next;
            p1=p1->next;
        }
        else{
            Node now=new node();
            now->data=p2->data;
            now->next=pre->next;
            pre->next=now;  
            pre=pre->next;
            p2=p2->next;
        }
    }
    while(p1!=NULL){
        Node now=new node();
        now->data=p1->data;
        now->next=pre->next;
        pre->next=now;
        pre=pre->next;
        p1=p1->next;
    }
    while(p2!=NULL){
        Node now=new node();
        now->data=p2->data;
        now->next=pre->next;
        pre->next=now;
        pre=pre->next;
        p2=p2->next;
    }
}
void flush(Node p){
    if(p)p=p->next;
    Node pre=p;
    if(p)p=p->next;
    while(p!=NULL){
        if(p->data==pre->data){
            pre->next=p->next;
            Node k=p;
            p=p->next;
            delete k;
        }
        else{
            pre=p;
            p=p->next;
        }
    }
}
void show(Node p){
    p=p->next;
    while(p!=NULL){
        cout<<p->data;
        p=p->next;
        if(p!=NULL) cout<<',';
    }
}
int main(){
    Node p1=new node();
    build(p1);
    Node p2=new node();
    p2->next=NULL;
    build(p2);
    Node p3=new node();
    p3->next=NULL;
    build(p1,p2,p3);
    flush(p3);
    show(p3);
    return 0;
}
posted @ 2021-10-28 01:21  今天又双叒叕在敲代码  阅读(33)  评论(0编辑  收藏  举报