PTA - 两个有序链表序列的合并 (c++ STL merge 函数的使用 附注释)

已知两个非降序链表序列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<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define maxn 1000005
vector <int >a,b,c;  //定义3个 int 类型的容器 如果不知道 vector 是什么可以百度一下
int main()
{
    int n;
    while(cin>>n)
    {
        if(n==-1)
        {
            break;
        }
         a.push_back(n);
    }  //a 赋值操作,下同
    while(cin>>n)
    {
        if(n==-1)
        {
            break;
        }
         b.push_back(n);
    }
    int sizea=a.size();  size 返回容器a 的大小,下同
    int sizeb=b.size();
    sort(a.begin(),a.end());  //对容器a 排序,降序,下同
    sort(b.begin(),b.end());
    c.resize(sizea+sizeb);  //对c 重新分配空间,这里是a+b 的总和
    merge(a.begin(),a.end(),b.begin(),b.end(),c.begin());  //使用前 a ,b 必须先排好序
    if((sizea+sizeb)==0) cout<<"NULL";
    else 
    {
        for(int i=0;i<c.size();i++)
        {
            if(i) cout<<" "<<c[i];  //按格式输出
            else cout<<c[i];
        }
    }
	return 0;
}

如果有可以修改的地方,可以联系我

发布了4 篇原创文章 · 获赞 1 · 访问量 79

猜你喜欢

转载自blog.csdn.net/weixin_45836300/article/details/104290078
今日推荐