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

相关文章推荐

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

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

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

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

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

5-52 两个有序链表序列的交集 (20分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−...

浙江大学PAT上机题解析之2-12. 两个有序链表序列的交集

链表并集

两个有序链表序列的合并

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

2-11. 两个有序链表序列的合并(15)

2-11. 两个有序链表序列的合并(15) 时间限制 500 ms 内存限制 80000 kB 代码长度限制 8000 B ...

02-线性结构1 两个有序链表序列的合并 (15分)

本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: t...

算法题:合并两个有序的链表

题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) ...
  • JXH_123
  • JXH_123
  • 2014年08月04日 16:50
  • 12961

两个有序链表序列的合并

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用-1−1表示序列的结尾(-1−1不属于这个序列)...

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

2-12. 两个有序链表序列的交集(20) (ZJU_PAT 链表 | vector)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:5-51 两个有序链表序列的合并 (20分)
举报原因:
原因补充:

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