考研机试 链表合并

考研机试 链表合并

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

输入格式

第一行输入第一个链表的结点数 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);
    }

}
相关推荐
C语言小火车3 分钟前
野指针:C/C++内存管理的“幽灵陷阱”与系统化规避策略
c语言·c++·学习·指针
凤年徐12 分钟前
【数据结构】时间复杂度和空间复杂度
c语言·数据结构·c++·笔记·算法
kualcal15 分钟前
代码随想录17|二叉树的层序遍历|翻转二叉树|对称二叉树
数据结构·算法
踏莎行hyx33 分钟前
使用langchain连接llama.cpp部署的本地deepseek大模型开发简单的LLM应用
c++·ai·langchain·大模型·llama.cpp·deepseek
山河木马40 分钟前
前端学C++可太简单了:双冒号 :: 操作符
前端·javascript·c++
满分观察网友z1 小时前
从混乱到有序:我用“逐层扫描”法优雅搞定公司组织架构图(515. 在每个树行中找最大值)
后端·算法
钮钴禄·爱因斯晨1 小时前
C语言 | 函数核心机制深度解构:从底层架构到工程化实践
c语言·开发语言·数据结构
满分观察网友z1 小时前
一行代码的惊人魔力:从小白到大神,我用递归思想解决了TB级数据难题(3304. 找出第 K 个字符 I)
后端·算法
字节卷动1 小时前
【牛客刷题】活动安排
java·算法·牛客
乌萨奇也要立志学C++2 小时前
【C++详解】STL-list模拟实现(深度剖析list迭代器,类模板未实例化取嵌套类型问题)
c++·list