考研机试 链表合并

考研机试 链表合并

给定两个元素有序(从小到大)的链表,要求将两个链表合并成一个有序(从小到大)链表。

输入格式

第一行输入第一个链表的结点数 S1。

第二行输入 S1个整数,两两之间用空格隔开。

第三行输入第二个链表的结点数 S2。

第四行输入 S2个整数,两两之间用空格隔开。

输出格式

输出合并之后的链表结果,两两之间用空格隔开。

链表所以使用list 用最暴力的方法创建三个list

分别用于存放链表1链表2以及最后需要输出的链表3

一定要注意对链表初始化时

cpp 复制代码
list<int> list1(s1);//表示初始化list1 长度为s1
for(int i=0;i<s1;++i){
int a;
scanf("%d",&a);
list1.push_back(a);//这样得到的list1长度为2*s1因为push_back是在链表最后添加元素的 
}

可以初始化链表之后先打印检验一下

cpp 复制代码
//链表只能使用list
#include <iostream>
#include <list>
using  namespace std;
int main(){
    int s1,s2;
    scanf("%d",&s1);
    list<int> list1;
    list<int>::iterator it1;
    for(int i=0;i<s1;++i){
        int a;
        scanf("%d",&a);
        list1.push_back(a);
    }
    scanf("%d",&s2);
    list<int> list2;
    list<int>::iterator it2;
    for(int i=0;i<s2;++i){
        int a;
        scanf("%d",&a);
        list2.push_back(a);
    }
    for(it1=list1.begin();it1!=list1.end();++it1){
        printf("%d ",*it1);
    }
    printf("\n");
    for(it2=list2.begin();it2!=list2.end();++it2){
        printf("%d ",*it2);
    }
    printf("\n");
    //从大到小合并
    list<int> list3(s1+s2);
    list<int>::iterator it3;
    it3=list3.begin();
    for(it1=list1.begin(),it2=list2.begin();(it1!=list1.end())&&(it2!=list2.end());++it3){
        if(*it1<=*it2){
            *it3=*it1;++it1;

        }else {
            *it3=*it2;++it2;

        }
    }
    //其中一方到头了 另一方直接续上
    while(it1!=list1.end()){
        *it3=*it1;
        ++it1;
        ++it3;
    }
    while(it2!=list2.end()){
        *it3=*it2;
        ++it2;
        ++it3;
    }
    for(it3=list3.begin();it3!=list3.end();++it3){
        printf("%d ",*it3);
    }

}
相关推荐
啊阿狸不会拉杆33 分钟前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
小学生的信奥之路1 小时前
洛谷P3817题解:贪心算法解决糖果分配问题
c++·算法·贪心算法
曙曙学编程2 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
你知道网上冲浪吗2 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
△曉風殘月〆2 小时前
Visual Studio中的常用调试功能(下)
c++·ide·visual studio·调试
武当豆豆2 小时前
C++编程学习(第25天)
开发语言·c++·学习
地平线开发者3 小时前
征程 6 | PTQ 精度调优辅助代码,总有你用得上的
算法·自动驾驶
Tisfy4 小时前
LeetCode 837.新 21 点:动态规划+滑动窗口
数学·算法·leetcode·动态规划·dp·滑动窗口·概率
CoovallyAIHub4 小时前
为高空安全上双保险!无人机AI护航,YOLOv5秒判安全带,守护施工生命线
深度学习·算法·计算机视觉
huangzixuan10074 小时前
08.18总结
算法·深度优先·图论