标题:想请教大佬们一个问题 这段代码哪里有问题呀 PTA上的题目
只看楼主
ykqccc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-3-21
结帖率:0
已结贴  问题点数:20 回复次数:1 
想请教大佬们一个问题 这段代码哪里有问题呀 PTA上的题目
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

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

输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL
输入样例:
1 2 5 -1
2 4 5 8 10 -1
输出样例:
2 5
--------------------------------------------------------------
以下是我的代码,求大佬们看一下吧:
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkList{
int data;
struct LinkList*next;
}LNode;
int main()
{
    LNode *L1,*L2,*L3;
    LNode *p,*q,*s;
    LNode *j,*k,*m;
    int i;
    L1=(LNode*)malloc(sizeof(LNode));
    L2=(LNode*)malloc(sizeof(LNode));
    L3=(LNode*)malloc(sizeof(LNode));
    L1->next=NULL;
    L2->next = NULL;
    L3->next = NULL;
    j=L1;
    while(scanf("%d",&i)&&i!=-1)
    {
        p=(LNode*)malloc(sizeof(LNode));
        p->data=i;
        p->next=j->next;
        j->next=p;
        j=p;
    }
    k=L2;
    while(scanf("%d",&i)&&i!=-1)
    {
        q=(LNode*)malloc(sizeof(LNode));
        q->data=i;
        q->next=k->next;
        k->next=q;
        k=q;
    }
    p=L1->next;
    q=L2->next;
    m=L3;
    while((p!=NULL)&&(q!=NULL))
    {
        if((p->data)<(q->data))
            p=p->next;
        else if((p->data)>(q->data))
        {
            q=q->next;
        }
        else if((p->data)==(q->data))
    {
        s=(LNode*)malloc(sizeof(LNode));
        s->data=p->data;
        s->next=m->next;
        m->next=s;
        m= m->next;
        p = p->next;
        q = q->next;
    }
    m=L3->next;
    if(L3->next==NULL)
    {   printf("NULL");return 0;}

    while(m!=NULL)
    {
        if(m->next==NULL)
            printf("%d",m->data);
        else
            printf("%d ",m->data);
        m=m->next;
    }
    return 0;

    }
}
最近才开始学数据结构,有一些地方还没写熟练,求大佬指正
搜索更多相关主题的帖子: next NULL 序列 data malloc 
2021-03-21 08:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
程序代码:
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;

int main( void )
{
    // 输入
    list<int> s1, s2;
    for( int t; cin>>t && t!=-1; s1.push_back(t) );
    for( int t; cin>>t && t!=-1; s2.push_back(t) );

    // 计算
    list<int> s3;
    set_intersection( begin(s1), end(s1), begin(s2), end(s2), back_inserter(s3) );

    // 输出
    for( auto itor=begin(s3); itor!=end(s3); ++itor )
        cout << (" "+(itor==begin(s3))) << *itor;
    if( s3.empty() )
        cout << "NULL";
}
2021-03-22 08:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505196-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052291 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved