首页 > 其他分享 >关于pta上6-2 两个有序链表序列的合并

关于pta上6-2 两个有序链表序列的合并

时间:2023-09-16 17:25:17浏览次数:45  
标签:Node p1 struct List pta Next 链表 L2 序列

这是在dev上的源代码,C语言

#include <stdio.h>
#include <stdlib.h>

typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
    ElementType Data;
    PtrToNode   Next;
};
typedef PtrToNode List;

List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表;空链表将输出NULL */

List Merge( List L1, List L2 );

int main()
{
    List L1, L2, L;
    L1 = Read();
    L2 = Read();
    L = Merge(L1, L2);
    Print(L);
    Print(L1);
    Print(L2);
    return 0;
}

/* 你的代码将被嵌在这里 */
List Read()
{
    int n;
    List L=(List)malloc(sizeof(PtrToNode));
    L->Next=NULL;
    scanf("%d",&n);
    struct Node* r=(struct Node*)malloc(sizeof(struct Node));
    r=L;
    int i;
    for(i=0;i<n;i++)
    {
    	struct Node* s=(struct Node*)malloc(sizeof(struct Node));
        scanf("%d",&(s->Data));
        s->Next=NULL;
        r->Next=s;
        r=s;
    }
    return L;
}
void Print(List L)
{
    struct Node* p=(struct Node*)malloc(sizeof(struct Node));
    p=L->Next;
    if(!p)
        printf("NULL");
    while(p)
    {
        printf("%d ",p->Data);
        p=p->Next;
    }
    printf("\n");
}
List Merge(List L1,List L2)
{
    List L=(List)malloc(sizeof(PtrToNode));
    struct Node* p=(struct Node*)malloc(sizeof(struct Node));
    struct Node* p1=(struct Node*)malloc(sizeof(struct Node));
    struct Node* p2=(struct Node*)malloc(sizeof(struct Node));
    L->Next=NULL;
    p=L;
    p1=L1->Next;
    p2=L2->Next;
    if(!p1)
        return L2;
    if(!p2)
        return L1;
    while(p1&&p2)
    {
        if((p1->Data)<=(p2->Data))
        {
            p->Next=p1;
            p1=p1->Next;
            p=p->Next;
        }
        else
        {
            p->Next=p2;
            p2=p2->Next;
            p=p->Next;
        }
    }
    if(!p1)
        p->Next=p2;
    else
        p->Next=p1;
    L1->Next=NULL;
    L2->Next=NULL;
    return L;
}

  

然后在pta上运行出现了错误

 

错误显示重复定义了Read和Print函数,但是我实在是不知道他在哪定义了,弄了半天最后把Read和Print函数删了,就运行成功了,我不理解

 

标签:Node,p1,struct,List,pta,Next,链表,L2,序列
From: https://www.cnblogs.com/chukjbgg333/p/17706975.html

相关文章

  • 46-字典-序列解包用于列表元组字典
          ......
  • 代码随想录算法训练营-回溯算法|455. 分发饼干、376. 摆动序列
    1.贪心算法一般分为如下四步:将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 455. 分发饼干1.局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。时间复杂度:O(nlogn)空间......
  • m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:我们可以看到,带有频偏的基带信号o_I_fre和o_Q_fre得到了有效的频偏补偿,其补偿后的数据o_Ir和o_Qr和原始的基带数据基本一致。2.算法涉及理论知识概要基带数据帧频偏估计和补偿是一种用于纠正数字通信系统中......
  • m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:          我们可以看到,带有频偏的基带信号o_I_fre和o_Q_fre得到了有效的频偏补偿,其补偿后的数据o_Ir和o_Qr和原始的基带数据基本一致。 2.算法涉及理论知识概要     基带数据帧频偏估计......
  • 9.15单链表无哨兵java实现
    publicclassMain{publicstaticvoidmain(String[]args){LNodeL=newLNode();System.out.println(L.number());L.Isempty();L.addFirst(4);//头插L.addFirst(3);L.addFirst(2);L.addFirst(1);L.a......
  • 在 Java 中自定义反序列化:实现可序列化接口
    实现可串行化接口的功能Serialized接口用于管理Java默认序列化机制使用的序列化和反序列化过程。Java虚拟机(JVM)通过该类的Serialized接口实现来指示该类是否具有可序列化和反序列化的能力。该接口不仅有利于序列化,而且还使开发人员可以自由地更改默认的反序列化行为。由......
  • P2501 [HAOI2006] 数字序列
    原题是思路非常值得学习的一道题第一问:首先我们感性上觉得这题应该和LIS有一点关系,但里面有一点问题:1750505018如果我们求LIS的话,我们会认为只需要改掉505050即可,但其实我们只改掉这些数,我们是无法做到让数单增的我们发现这个限制写成数学语言即为:\(a_i-a_j\geq......
  • [剑指offer] 链表篇
    JZ6从尾到头打印链表1/*从尾到头递归*/2publicclassJZ6_13{4privatestaticArrayList<Integer>res=newArrayList<>();56publicstaticArrayList<Integer>printListFromTailToHead(ListNodelistNode)7{8......
  • 为什么基于transformer的序列分类不用decoder模块?
    Transformer原本是为机器翻译设计的编码-解码(Encoder-Decoder)结构。在序列分类任务中,主要利用的是Transformer的Encoder模块来获取输入序列的特征表示,而不需要Decoder模块,主要有以下原因:解码模块主要用来生成目标序列,而分类任务只需要判别整个源序列的类别,不需要生成目......
  • php反序列化神奇构造
    来自[网鼎杯2020朱雀组]phpweb打开看看,我超,孙......