考研机试 链表合并

考研机试 链表合并

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

输入格式

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

}
相关推荐
唐诺3 小时前
几种广泛使用的 C++ 编译器
c++·编译器
XH华3 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_4 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子4 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
冷眼看人间恩怨4 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
菜鸡中的奋斗鸡→挣扎鸡4 小时前
滑动窗口 + 算法复习
数据结构·算法
红龙创客4 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
Lenyiin4 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码4 小时前
Cmd命令大全(万字详细版)
python·算法·小程序