使用STL中的list容器实现单链表的操作
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
void Print(int &item)
{
cout<<item<<" ";
}
int main()
{
list<int> listintegers;
list<int>::iterator listiter; //引入迭代器
//------------头插法插入元素-------------
listintegers.push_front(5);
listintegers.push_front(3);
listintegers.push_front(1);
listintegers.push_front(2);
listintegers.push_front(4);
//----------尾插法插入元素----------
listintegers.push_back(6);
listintegers.push_back(8);
listintegers.push_back(7);
//--------使用list的成员函数insert()插入元素到链表中
listintegers.insert(listintegers.end(),10);
listintegers.insert(listintegers.end(),9);
//----------利用迭代器输出链表-----------
/* 我们在每一个算法中都使用一个或多个iterator。
我们使用它们来存取容器中的对象。
要存取一个给定的对象,我们把一个iterator指向它,然后间接引用这个iterator */
cout<<"链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//-------利用STL通用算法for_each()输出链表---------------
/* Print是个函数,实现对象的输出功能 */
cout<<"链表为:";
std::for_each(listintegers.begin(),listintegers.end(),Print);
cout<<endl;
//------利用STL通用算法find()推断链表中是否存在某元素----------
listiter=find(listintegers.begin(),listintegers.end(),6);
if(listiter==listintegers.end())
{
cout<<"6 is not in list"<<endl;
}
else
{
cout<<"6 is in list"<<endl;
}
//-------利用STL通用算法search()推断链表中是否存在某个序列-------
list<int> targetlist;
targetlist.push_front(2);
targetlist.push_front(1); //定义该序列为12
listiter=search(listintegers.begin(),listintegers.end(),targetlist.begin(),targetlist.end());
if(listiter==listintegers.end())
{
cout<<"序列12 is not in list"<<endl;
}
else
{
cout<<"序列12 is in list"<<endl;
}
//使用list的成员函数sort()对链表进行排序
cout<<"排序后,链表为:";
listintegers.sort();
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//使用list的成员函数remove()删除链表元素
listintegers.remove(8);
cout<<"删除8后,链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//----------使用list成员函数pop_front删除链首元素----------
listintegers.pop_front();
cout<<"删除链首元素后。链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//----------使用list成员函数pop_back删除链尾元素----------
listintegers.pop_back();
cout<<"删除链尾元素后,链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
system("pause");
return 0;
}
使用STL中的list容器实现单链表的操作的更多相关文章
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- 【转】 STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- STL中的set容器的一点总结(转)
STL中的set容器的一点总结 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂 ...
- C++ STL中的常用容器浅谈
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...
- stl中顺序性容器,关联容器两者粗略解释
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- 深入解析C++ STL中的常用容器
转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...
- STL中的set容器的一点总结2
http://blog.csdn.net/sunshinewave/article/details/8068326 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像 ...
- 【转】STL中的set容器的一点总结
转自 http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html 1.关于set C++ STL 之所以得到广泛的赞誉,也 ...
- java实现单链表常见操作
一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...
随机推荐
- Centos查看端口占用和关闭端口
Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令: lsof -i tcp:80 列出所有端口 netstat -ntlp 1.开启端口(以80端口为例) ...
- 《深入理解Java虚拟机》笔记--第三章 、垃圾收集器与内存分配策略
1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言. Java的垃圾收集(Garbage Collection)主要关注堆和方法区的内存回收. 在GC堆进行回收前,第一件 ...
- HDU 1043 Eight(反向BFS+打表+康托展开)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 题目大意:传统八数码问题 解题思路:就是从“12345678x”这个终点状态开始反向BFS,将各 ...
- HDU 2053 Switch Game(开灯问题,完全平方数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2053 题目大意:灯开始是关着的,有n盏灯,i从1数到n每当灯的序号是i的倍数的时候就对灯进行一次操作( ...
- FPGA 17最佳论文导读 ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 后面陆续写一些关于神经网络加 ...
- (转)OpenCV 访问Mat中每个像素的值
转自:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 在<OpenCV 2 Computer Vision Applicati ...
- win10自动更新失败
十一过后,win10 总是提示自动更新失败,每天都会重启一次,按照官方给出的操作进行了也不好使, 后来就关闭更新,没有再打开 ------------------------------------- ...
- 【PAT】1009. 说反话 (20)
1009. 说反话 (20) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其 ...
- mongodb卸载再重装
标题就凸显了尴尬,是的,本地(ubuntu16.04)自带的mongodb太老了,想要装最新版的 卸载: sudo dpkg -P mongodb 然后下载新版的mongodb: https://m ...
- Linux下rsync的用法
一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync” ...