链表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容器 ...
随机推荐
- 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6564592 在前一篇文章提到,从源代码树下载下 ...
- HDU 1027 Ignatius and the Princess II 选择序列题解
直接选择序列的方法解本题,可是最坏时间效率是O(n*n),故此不能达到0MS. 使用删除优化,那么就能够达到0MS了. 删除优化就是当须要删除数组中的元素为第一个元素的时候,那么就直接移动数组的头指针 ...
- exec与xargs区别
区别描述: 两者都是对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令. -exec:{}表示命令的参数即为所找到的文件,以:表示comman命令的结束.\是转义符,因为分号在 ...
- web负载均衡整理
参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.html http://www.cnblogs.com/loving ...
- 关于(x&y)+((x^y)>>1)的探究
今天在程序员面试宝典上看到 int f(int x int y ) { return (x&y)+((x^y)>>1) } f(729,271) 结果为500 从式子中可以看出分为 ...
- AngularJS 通过 Spring Restful 上传文件
总结一下,在写下这些文字之前心里很不爽,一个小问题倒腾了这么久... JS 端: // 指令 app.directive('fileModel', ['$parse', function($pars ...
- js 实现音乐播放
<html><head><title>这种方式支持任何浏览器</title></head><body><div id=&q ...
- [Codeforces Round #192 (Div. 2)] D. Biridian Forest
D. Biridian Forest time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- vc获取时间戳
CTime cTime = CTime::GetCurrentTime(); CString msg; msg.Format("%u",cTime .GetTime()); Afx ...
- 剖析C语言中a=a+++++a的无聊问题
同僚们闲聊,突然就聊到了a+++++a的问题.这种纯属C语言 “二” 级的问题应该是从a+++a引申出来的吧.于是乎兄弟姐妹们开始讨论它的运算结果,以及改如何理解.更有人写出(a++)+(++a) a ...