链表list容器中通过splice合并链表与merge的不同,及需要注意的问题
#include "stdafx.h"
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
int_tmain(int argc, _TCHAR* argv[])
{
list<int> c1,c2,c3,c4;
c1.push_back(3);
c1.push_back(6);
c2.push_back(2);
c2.push_back(4);
c3.push_back(5);
c3.push_back(1);
c4.push_back(40);
c4.push_back(41);
cout<<"c1="<<endl;
copy(c1.begin(),c1.end(),ostream_iterator<int>(cout,""));
cout<<endl;
cout<<"c2="<<endl;
copy(c2.begin(),c2.end(),ostream_iterator<int>(cout,""));
cout<<endl;
c2.splice(c2.begin(),c1);//将链表c1插入到链表c2的链头:第一种使用方式
cout<<"After splice c1 and c2>: c2=: "<<endl;
copy(c2.begin(),c2.end(),ostream_iterator<int>(cout,""));
cout<<endl;
cout<<"After splice c1 and c2: c1="<<endl;
copy(c1.begin(),c1.end(),ostream_iterator<int>(cout,""));
cout<<"可见splice合并后c1中没有内容了"<<endl;
cout<<"c3="<<endl;
copy(c3.begin(),c3.end(),ostream_iterator<int>(cout,""));
cout<<endl;
c2.splice(c2.begin(),c3,c3.begin());//将c3链表的头元素插入c2链表的头部:第二种使用方式
cout<<"After splice c2 and c3: c2=: "<<endl;
copy(c2.begin(),c2.end(),ostream_iterator<int>(cout,""));
cout<<endl;
cout<<"After splice c3="<<endl;
copy(c3.begin(),c3.end(),ostream_iterator<int>(cout,""));
cout<<endl;
cout<<"可见splice后,c3的头元素不在了"<<endl;
cout<<"c4="<<endl;
copy(c4.begin(),c4.end(),ostream_iterator<int>(cout,""));
cout<<endl;
c2.splice(c2.begin(),c4,c4.begin(),c4.end());//将链表c4从开始到结束都合并到c2开始的位置:第三种使用方式
cout<<"After splice c2 and c4: c2=: "<<endl;
copy(c2.begin(),c2.end(),ostream_iterator<int>(cout,""));
cout<<endl;
cout<<"After splice c4="<<endl;
copy(c4.begin(),c4.end(),ostream_iterator<int>(cout,""));
cout<<endl;
cout<<"可见splice合并后c4中没有内容了"<<endl;
return 0;
}
执行结果:
可见:splice与merge最大的不同时,不用排序,也不要求原始链表有序。相同点是,被合并的链表或元素将消失。
链表list容器中通过splice合并链表与merge的不同,及需要注意的问题的更多相关文章
- c# 有序链表合并 链表反转
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- [算法]合并链表&删除数组重复项
合并链表 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1-> ...
- Golang从合并链表聊递归
从合并链表聊递归 递归是工程师最常见的一种解决问题的方式,但是有时候不容易真正掌握.有人说是看起来很简单,自己写起来会费点劲. 最著名的例子就是斐波那契数列(Fibonacci sequence),通 ...
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- php数据结构课程---2、链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的))
php数据结构课程---2.链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的)) 一.总结 一句话总结: php是弱类型语言,变量即可表示数值,也可表示对象:链表节点的数据域的值就 ...
- C语言:将字符串中的字符逆序输出,但不改变字符串中的内容。-在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
//将字符串中的字符逆序输出,但不改变字符串中的内容. #include <stdio.h> /************found************/ void fun (char ...
- C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,
//函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> ...
- python中的数据结构-链表
一.什么是链表 链表是由一系列节点构成,每个节点由一个值域和指针域构成,值域中存储着用户数据,指针域中存储这指向下一个节点的指针.根据结构的不同,链表可以分为单向链表.单向循环链表.双向链表.双向循环 ...
- 【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
随机推荐
- ffmpeg + sdl -03 简单音频播放器实现
没办法,工作中遇到了问题. 目前NEC EMMA的架构如下: 从USB读入文件 -> 文件分析并提取Packet中的Payload Data -> NEC HANDLE AVTrans ...
- 在Unity中使用Shader
1.Material 和 Shader 的关系.一个材质包括一个Shader程序.在Shader中设置的属性能够通过Material可视化设置 2.内建Shader,在5.0之后的版本号中大部分旧的S ...
- magento xml配置详解
<?XML版本=“1.0”? <config> <节> 实施例translate="label"> <label>的一个例子< ...
- [Javascript] Call Stack
Every time when a function run it will be push into the call stack and put on the top, you can thin ...
- c++11 NULL、0、nullptr
C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #de ...
- Android 关于倒计时功能的实现
关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...
- Linux基础知识笔记
1.case的命令格式 #!/bin/sh echo "please input number 1 to 3" read number case $number in ) e ...
- VS2010不能打开预编译的网站源码的原因是什么?(转之csdn)
原问题: 今天将写好的一个网站源码目录拷贝到另一台电脑上,但打开时提示: 你要打开一个预编译的网站,你可以查看该站点,但对它进行更改可能会造成该网站停止运行,若要修改站点,建议先编辑原始网站中的 ...
- mysql配置文件my.cnf解析转载
basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件 ...
- 全世界最详细的图形化VMware中linux环境下oracle安装(一)【weber出品必属精品】
安装流程:前期准备工作--->安装ORACLE软件--->安装升级补丁--->安装odbc创建数据库--->安装监听器--->安装EM <前期准备工作> 安装 ...