5-51 两个有序链表序列的合并 (20分)

原创 2016年08月31日 11:49:41

5-51 两个有序链表序列的合并 (20分)

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。
输入格式:

输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1-不属于这个序列)。数字用空格间隔。
输出格式:

在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:

1 3 5 -1
2 4 6 8 10 -1

输出样例:

1 2 3 4 5 6 8 10

思路
生成两个链表,合并输出
点击访问 PTA-测验

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

时间                  结果  得分  题目  编译器 用时(ms)内存(MB)用户
2016-03-26 19:32    答案正确      20    5-52  gcc  416  31  569985011
测试点 结果  得分/满分   用时(ms)内存(MB)
测试点1    答案正确      10/10    2  1
测试点2    答案正确      1/1    1  1
测试点3    答案正确      3/3    1  1
测试点4    答案正确      3/3    2  1
测试点5    答案正确      1/1    13  1
测试点6    答案正确      2/2    416  31
*/
typedef struct node *Node;
struct node {
    int Data;
    Node Next;
} ;

Node Scan(void);

int main() {
    Node Link1=Scan();
    Node Link2=Scan();
    int flag=0;
    while(Link1&&Link2) {
        if(Link1->Data >Link2->Data) {
            if(flag)printf(" ");
            else flag=1;
            printf("%d",Link2->Data );
            Link2=Link2->Next ;
        } else {
            if(flag)printf(" ");
            else flag=1;
            printf("%d",Link1->Data );
            Link1=Link1->Next ;
        }
    }
    while(Link1) {
        if(flag)printf(" ");
        else flag=1;
        printf("%d",Link1->Data );
        Link1=Link1->Next ;
    }
    while(Link2) {
        if(flag)printf(" ");
        else flag=1;
        printf("%d",Link2->Data );
        Link2=Link2->Next ;
    }
    if(!flag)printf("NULL");
    return 0;
}

Node Scan(void) {
    struct node head;
    Node U=&head;
    head.Next =NULL;
//  head.Data =-1;
    int num ;
    while(1) {
        scanf("%d",&num);
        if(num!=-1) {

            U->Next =(Node)malloc(sizeof(struct node));
            U->Next ->Data =num;
            U=U->Next ;

        } else break;
    }
    U->Next =NULL;
    return head.Next ;
}
版权声明:写这些东西还是问了交流进步,如果你有不同的方法、见解,欢迎交流分享。文章中附的代码只传达当时我的一种做法,并非我认为最好的。

链表拼接

本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接...
  • m0_38015368
  • m0_38015368
  • 2017年09月06日 17:38
  • 603

两个有序链表序列的合并

02-线性结构1 两个有序链表序列的合并   (15分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列。 函数接口定义: List Merge( L...
  • ccDLlyy
  • ccDLlyy
  • 2016年09月24日 15:55
  • 5092

链表实现拼接

  • 2012年11月05日 18:01
  • 2KB
  • 下载

PAT 两个有序链表序列的合并

PAT 两个有序链表序列的合并
  • zhuyu__com
  • zhuyu__com
  • 2016年03月24日 21:15
  • 4940

5-51 两个有序链表序列的合并 (20分)

5-51 两个有序链表序列的合并   (20分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干...
  • qq_32511479
  • qq_32511479
  • 2016年12月02日 17:28
  • 598

5-16 两个有序链表序列的交集 (20分)

5-16 两个有序链表序列的交集 (20分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,...
  • chan_yeol
  • chan_yeol
  • 2016年03月27日 11:29
  • 2483

两个有序链表序列的合并

习题2.5 两个有序链表序列的合并   (15分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List ...
  • u013243314
  • u013243314
  • 2017年06月23日 00:05
  • 239

7-2 两个有序链表序列的交集(20 分)

7-2 两个有序链表序列的交集(20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成...
  • qq_38158040
  • qq_38158040
  • 2017年11月21日 20:09
  • 69

2-12. 两个有序链表序列的交集(20)

由于是有序,所以通过 利用 分别指向两个待合并链表的指针 所指的data相互比较 进而求交集 相比顺序表 实现 效率高。 #include using namespace std; typedef...
  • qq_17249047
  • qq_17249047
  • 2015年07月11日 12:04
  • 598

2-12. 两个有序链表序列的交集(20)

2-12. 两个有序链表序列的交集(20) 时间限制 400 ms 内存限制 64000 kB 代码长度限制 8000 B ...
  • u011415955
  • u011415955
  • 2014年07月19日 21:38
  • 902
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:5-51 两个有序链表序列的合并 (20分)
举报原因:
原因补充:

(最多只允许输入30个字)