• 【线性结构】两个有序链表序列的合并


    本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。

    函数接口定义:

    List Merge( List L1, List L2 );
    
     

    其中List结构定义如下:

    typedef struct Node *PtrToNode;
    struct Node {
        ElementType Data; /* 存储结点数据 */
        PtrToNode   Next; /* 指向下一个结点的指针 */
    };
    typedef PtrToNode List; /* 定义单链表类型 */
    
     

    L1L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。

    裁判测试程序样例:

    #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;
    }
    
    /* 你的代码将被嵌在这里 */
    
     

    输入样例:

    3
    1 3 5
    5
    2 4 6 8 10
    
     

    输出样例:

    1 2 3 4 5 6 8 10 
    NULL
    NULL

    注意点:

    L1、 L2、 L 三条链表都要求有头结点,所以分别从L1->Next,L2->Next开始比较节点,最后返回L 的头指针。

     1 List Merge(List L1,List L2) {
     2     List L = (List)malloc(sizeof(struct Node));
     3     L->Next=NULL;
     4     List s=L,s1=L1->Next, s2=L2->Next;
     5     while (s1&&s2) {
     6         if (s1->Data < s2->Data) {
     7             s->Next = s1;
     8             s1 = s1->Next;
     9         }
    10         else {
    11             s->Next = s2;
    12             s2 = s2->Next;
    13         }
    14         s = s->Next;
    15     }
    16     if (s1) {//如果s1还有剩余节点
    17         s->Next = s1;
    18         
    19     }
    20     if (s2) {
    21         s->Next = s2;
    22     }
    23     L1->Next = NULL;
    24     L2->Next = NULL;//只剩头结点
    25     //L = L->Next;
    26     return L;
    27 }
    作者:PennyXia
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    未来十年Python的前景会怎样?
    mysql配置mha高可用防火墙未关闭报错
    Cenos7 切换单用户模式
    奇葩问题: lsattr -d /data 显示:----------I--e- /data/
    在Vue 的main.js 文件使用Element-UI的this.$message('msg')
    IIS上部署项目,网页控制台报错,.svg 等文件类型找不到
    git commit 格式
    Entity Framework 插入带有外键的数据,重新添加了外建表里的数据
    element-ui Select 组件传递对象
    Entity Framework Code First实体关联数据加载
  • 原文地址:https://www.cnblogs.com/PennyXia/p/12484429.html
Copyright © 2020-2023  润新知