qq_46188714 2020-03-08 15:06 采纳率: 0%
浏览 154

当s1,s2链表不为空时,s3为空,交集为空时程序停止工作

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

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。

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

typedef struct LNode {
    int  Data;
  struct LNode *Next;
}List;


int main()
{
    List *s1,*s2,*s3,*p1,*p2,*p3;
    int  x1,x2;
    s1 = (List *)malloc(sizeof(List));
    s2 = (List *)malloc(sizeof(List));
    s3 = (List *)malloc(sizeof(List));

    s1->Next = NULL;
    s2->Next = NULL;

    p1 = s1;
    scanf("%d",&x1);
    while(x1 != -1)
    {
        p1->Next = (List*)malloc(sizeof(List));
        p1->Next->Data = x1;
        p1 = p1->Next;
        p1->Next = NULL;
        scanf("%d",&x1);
    }
    scanf("%d",&x2);
    p2 = s2;
    while(x2 != -1)
    {
        p2->Next = (List*)malloc(sizeof(List));
        p2->Next->Data = x2;
        p2 = p2->Next;
        p2->Next = NULL;
        scanf("%d",&x2);
    }
    p1 = s1->Next;
    p2 = s2->Next;
    p3 = s3;
    s3->Next = NULL;
        while(p1!=NULL&&p2!=NULL)
        {
            if(p1->Data>p2->Data)
            {
                p2 = p2->Next;
            }
            if(p1->Data<p2->Data)
            {
                p1 = p1->Next;
            }
            if(p1->Data == p2->Data)
            {
                p3->Next = p1;
                p1 = p1->Next;
                p2 = p2->Next;
                p3 = p3->Next;

            }
                p3->Next = NULL;
        }

     p3 = s3->Next;
    if(p3 != NULL)
    {
        printf("%d",p3->Data);
        p3 = p3->Next;
        while(p3 != NULL)
        {
            printf(" %d",p3->Data);
            p3 = p3->Next;
        }

    }
    if(s3->Next == NULL)//当s1,s2链表不为空时,s3为空,运行c错误
    {
        printf("NULL");
    }

    return 0;
}

当s1,s2链表不为空时,s3为空,交集为空时程序停止工作

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-08 15:16
    关注

    s3->Next
    这里s3已经是NULL了

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog