首页 > 其他分享 >11.16线性表A,B顺序存储合并

11.16线性表A,B顺序存储合并

时间:2023-11-21 23:03:20浏览次数:29  
标签:p2 p3 p1 线性表 11.16 next now 顺序存储 Node

 

#include<iostream>
#include<cstring>
using namespace std;
typedef struct f{
    int data;
    f* next;
}node,*Node;
void build(f *p){
    int x;
    while(cin>>x&& x != -1){
        f *now=new node();
        now->data=x;
        now->next=p->next;
        p->next=now;
    }
}
void build(Node p1,Node p2,Node p3){
    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=p3->next;
            p3->next=now;
            p3=p3->next;
            p1=p1->next;
        }
        else{
            Node now=new node();
            now->data=p2->data;
            now->next=p3->next;
            p3->next=now;  
            p3=p3->next;
            p2=p2->next;
        }
    }
    while(p1!=NULL){
        Node now=new node();
        now->data=p1->data;
        now->next=p3->next;
        p3->next=now;
        p3=p3->next;
        p1=p1->next;
    }
    while(p2!=NULL){
        Node now=new node();
        now->data=p2->data;
        now->next=p3->next;
        p3->next=now;
        p3=p3->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();
    p1->next=NULL;
    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;
}

先定义结构体包括data,next;再new两个新链表build插入相应的数(尾插法);再建一个build函数来处理这两个链表,对比这两个链表中的结点大小,小的存储进新的链表p3中,最后如果链表p1,p2哪个还剩下结点,直接插入p3中(尾插法);最后判断p3中重复的结点并删除,最后输出链表。

标签:p2,p3,p1,线性表,11.16,next,now,顺序存储,Node
From: https://www.cnblogs.com/aixin52129211/p/17847834.html

相关文章

  • 初级线性表
    初级线性表vectorv.resize(n,m)重新调整数组大小为\(n\),如果比原来的小,就删除多余信息。如果比原来的大,就把新增的部分初始化为\(m\),其中\(m\)可以省略。vector<int>a(n+1)初始化。P3613[深基15.例2]寄包柜#include<iostream>#include<algorithm>#include<......
  • 11.16
    上午上了建模语言和体育课,建模语言进行了上机课进行了用例图的创建,体育课进行了蓝球训练,以及进攻放法里的拆分。下午上了数据结构和离散数学,数据结构进行了上机课,完成了实验题目,离散数学讲了代数系统里的群和子群。......
  • 11.16每日总结
     昨天博客忘记发了,补一下。 昨天上课王老师强调了智能排产。昨天在做一个可以实现不同表都可以调用的增函数。publicstaticvoidinsertData(StringtableName,String...columnValuePairs){Connectionconnection=getConnection();try{......
  • 数组模拟线性表
    //使用数组实现线性表//为了简单起见,表中的数据都是int类型#include<stdio.h>#include<malloc.h>//定义线性表数据类型typedefstructList{ intdata[100];//最多存放100个int intlast;//线性表最后一个元素的下标}List,*PList;//初始化线性表PListMakeEmpty......
  • 线性表A,B顺序存储合并
    7-1线性表A,B顺序存储合并有两张非递增有序的线性表A,B,采用顺序存储结构,两张表合并用c表存,要求C为非递减有序的,然后删除C表中值相同的多余元素。元素类型为整型#include<iostream>#include<cstring>usingnamespacestd;typedefstructf{intdata;f*next;}node,*......
  • 2023.11.16 总结
    T1Problem-E-Codeforces根据题目我们可以看出这些圆与该直线都不想交,划分为了两部分。而且,因为圆心在原线段的中垂线上,所以每个圆与我们所求的圆相交时我们所求的圆的圆心的\(x\)坐标是一段连续的区间。那我们可以用二分出每个区间后就可以了。T2Problem-D-Codefo......
  • 11.16
    回归pta今天在上机实验时,回归数据结构PTA 有序表合并#include<iostream>usingnamespacestd;#defineMaxsize100structList{intdata[Maxsize];intlength;};Listmeger(ListA,ListB){Listc;inti=0,j=0,k=0;while(i<A.length&&j<B.length)......
  • 11.16
    今天距离NOIP还有1天......
  • 11.16 基本完成个人任务管理系统项目后重新复习JavaScript高级程序设计——声明var与l
    我看的是js高级程序设计第四版,前两章快速了解了一下,第三章开始慢啃,虽然内容枯燥,很多东西自己也知道了,但还是有一些收获的。比如,声明变量的三个关键词:var、let、const;var以前经常用但是会出问题,相比let没有那么严谨(var声明范围函数作用域,而let声明范围块级作用域)。看个例子:这是v......
  • 数据结构C语言之线性表
    发现更多计算机知识,欢迎访问Cr不是铬的个人网站1.1线性表的定义线性表是具有相同特性的数据元素的一个有限序列对应的逻辑结构图形:从线性表的定义中可以看出它的特性:(1)有穷性:一个线性表中的元素个数是有限的(2)一致性:一个线性表中所有元素的性质相同,即数据类型相同(3)序列性:各......