zoukankan      html  css  js  c++  java
  • 7-15 两个有序链表序列的合并(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
    

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    typedef struct Node *Node;
    struct Node
    {
        int data;
        Node Next;
    };
    Node CList()
    {
        int d;
        Node head = (Node)malloc(sizeof(struct Node)),q;
        head -> Next = NULL;
        q = head;
        while(~scanf("%d",&d)&&d!=-1)
        {
            Node p = (Node)malloc(sizeof(struct Node));
            p -> data = d;
            p -> Next = NULL;
            q -> Next = p;
            q = p;
        }
        return head;
    }
    Node Merge(Node a,Node b)
    {
        a = a -> Next;
        b = b -> Next;
        Node head = (Node)malloc(sizeof(struct Node));
        head -> Next = NULL;
        Node q = head;
        while(a || b)
        {
            Node p = (Node)malloc(sizeof(struct Node));
            p -> Next = NULL;
            if(a == NULL || a -> data > b -> data)
            {
                p -> data = b -> data;
                b = b -> Next;
                q -> Next = p;
                q = p;
            }
            else
            {
                p -> data = a -> data;
                a = a -> Next;
                q -> Next = p;
                q = p;
            }
        }
        return head;
    }
    void printL(Node a)
    {
        a = a -> Next;
        if(a == NULL)printf("NULL");
        int flag = 0;
        while(a)
        {
            if(flag)printf(" %d",a -> data);
            else printf("%d",a -> data);
            a = a -> Next;
            flag = 1;
        }
    }
    int main()
    {
        Node a = CList();
        Node b = CList();
        Node c = Merge(a,b);
        printL(c);
    }
  • 相关阅读:
    OpenGL中FrameBuffer使用
    每天进步一点点>结构化异常处理(SEH)
    js操作cookies
    [转]高性能网站优化与系统架构
    正则-匹配超链接地址及内容
    在c#.net中操作XML
    ActionScript 3 step by step (6) 元标记
    Facebook CEO:终极目标并非出售或上市
    ActionScript 3 step by step (3) 事件处理
    ActionScript 3 step by step (2) 使用Trace()跟踪输出
  • 原文地址:https://www.cnblogs.com/8023spz/p/7702580.html
Copyright © 2011-2022 走看看