使用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 ...
随机推荐
- 禁用quartz自动检查更新
禁用quartz自动检查更新的3种方法 1, <bean id="startQuertz" lazy-init="false" autowire=&quo ...
- 用PHP去实现数据库查询结果缓存
有些时候我们希望减少对数据库的查询来提高程序的性能,因为这些数据不是经常变更的,而是会在很长一段时间内都不会变化,因此,我们每连接一次数据库,都会把相应的结果用文件的形式保存起来.比如对于一个商城来说 ...
- 用于启动 Windows Phone 8 内置应用的 URI 方案
本主题列出了可用于启动内置应用的 URI 方案.许多内置于 Windows Phone 的应用,都可以通过调用 LaunchUriAsync(Uri) 和传入一个使用与要启动应用相关的方案的 URI, ...
- win10产品密钥 win10专业版激活码key
转载地址:http://www.xitongcheng.com/jiaocheng/xtazjc_article_35407.html https://blog.csdn.net/WangJianku ...
- java网络编程三次握手四次挥手
第一次握手:client设置syn=1,随机产生一个序列号seq=x,将数据包发送到server.client进入syn_send状态, 等待server确认. 第二次握手:server查看clien ...
- 【PAT】1012. 数字分类 (20)
1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算 ...
- 面试题13:在O(1)时间删除链表节点
注意分情况讨论: 1. 要删除的不是尾节点 2. 链表只有一个节点 3. 链表中有多个节点,删除尾节点 void DeleteNode(ListNode** pListHead, ListNode* ...
- Eclipse中用两个控制台测试网络通信程序
1.启动发送端和接收端程序,这时在控制台可以看到两个程序在运行,如下图. 2.这种情况下只有一个控制台窗口,不便于测试程序,于是新建一个控制台窗口,如下图. 3.这时可以发现已经有了两个控制台窗口了, ...
- Codeforces 722C(并查集 + 思维)
本文链接:http://www.cnblogs.com/Ash-ly/p/5932712.html 题目链接:http://codeforces.com/problemset/problem/722/ ...
- 修复mysql
REPAIR TABLE TABLENAME 或 REPAIR TABLE TABLENAME USE_FRM