#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的不同,及需要注意的问题的更多相关文章

  1. c# 有序链表合并 链表反转

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. [算法]合并链表&删除数组重复项

    合并链表 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1-> ...

  3. Golang从合并链表聊递归

    从合并链表聊递归 递归是工程师最常见的一种解决问题的方式,但是有时候不容易真正掌握.有人说是看起来很简单,自己写起来会费点劲. 最著名的例子就是斐波那契数列(Fibonacci sequence),通 ...

  4. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...

  5. php数据结构课程---2、链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的))

    php数据结构课程---2.链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的)) 一.总结 一句话总结: php是弱类型语言,变量即可表示数值,也可表示对象:链表节点的数据域的值就 ...

  6. C语言:将字符串中的字符逆序输出,但不改变字符串中的内容。-在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

    //将字符串中的字符逆序输出,但不改变字符串中的内容. #include <stdio.h> /************found************/ void fun (char ...

  7. C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,

    //函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> ...

  8. python中的数据结构-链表

    一.什么是链表 链表是由一系列节点构成,每个节点由一个值域和指针域构成,值域中存储着用户数据,指针域中存储这指向下一个节点的指针.根据结构的不同,链表可以分为单向链表.单向循环链表.双向链表.双向循环 ...

  9. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

随机推荐

  1. Leetcode_num3_Same Tree

    题目: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...

  2. c语言10个经典小程序

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...

  3. HashSet的分析(转)

    一.  HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null元素. 二.  ...

  4. (转)javascript深入理解js闭包

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  5. (转) 值不能为空。参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explorer)

    打开MSSQL 2008 R2的时候,展开数据库都显示以下的错误提示: 值不能为空.参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explo ...

  6. sql语句的分类

    这些天在看Oracle database 11g SQL开发指南,关于sql语句的分类,感觉有必要记录一下. sql语句主要分五类: DML(DATA MANIPULATION LANGUAGE, 数 ...

  7. (一)原生JS实现 - 基本类方法

    类 var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } ...

  8. (原+转)ubuntu终端输出彩色文字

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6066697.html 参考网址: http://www.tuicool.com/articles/jI ...

  9. 在windows中搭建php开发环境

    一.wampserver wampserver是一个安装集成包,包含了开发所需的apache,mysql,php,简单方便. 下载地址 http://www.xiazaiba.com/html/279 ...

  10. hdu 2034

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...