cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
/*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
实例化std::list对象
在list开头插入元素
在list末尾插入元素
在list中间插入元素,插入时间恒定,非常快。数组:中间插入慢。
删除list中的元素
对list中元素进行反转和排序
通过指针指向下一个节点
//链表不是数组,没有下标。只能使用迭代器
*/
/*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
实例化std::list对象
在list开头插入元素
在list末尾插入元素
在list中间插入元素,插入时间恒定,非常快。数组:中间插入慢。
删除list中的元素
对list中元素进行反转和排序 通过指针指向下一个节点
//链表不是数组,没有下标。只能使用迭代器
*/ #include <iostream>
#include <list> using namespace std; void PrintListContents(const list<int>& listInput); int main()
{
list <int> a;//list也是一个模板类,a就是双向链表
a.push_front();//链表前端添加数据
a.push_front();
a.push_front();
a.push_front();
a.push_back();//链表后端添加数据 //a.insert(a.begin(), 10);//在开头的前面插入10。 a.begin()就是迭代器 list<int> b;
b.push_back();
b.push_back();
b.push_back();
b.push_back();
b.push_back(); //链表不是数组,没有下标
std::list<int>::iterator iter;//迭代器就是指针 iter = a.begin();
a.insert(iter, );//在开头的前面插入11。
a.insert(a.end(), , );//在后端插入3个30,a.end()就是迭代器 ++iter;
a.insert(iter, );//在开头的下一个位置插入11.++iter指针移动了位置
//a.insert(a.end(), b.begin(), b.end());//把list b的数据全部插入到list a的末尾 a.insert(a.end(),++b.begin(),--b.end());//b的第二个位置数据到 b结尾倒数一个数。一起插入 cout << "show list a data..." << endl;
PrintListContents(a); /*for (iter = a.begin(); iter != a.end(); ++iter)
{
cout << *iter << endl;
}*/
cout << "show list b data" << endl;
PrintListContents(b); return ;
}
void PrintListContents(const list<int>& listInput)
{
std::list<int>::const_iterator iter;
for (iter = listInput.begin(); iter != listInput.end(); ++iter)
cout << *iter << endl;
}
/*cb02b_c++_ */ /*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
实例化std::list对象
在list开头插入元素
在list末尾插入元素
在list中间插入元素,插入时间恒定,非常快。数组:中间插入慢。
删除list中的元素
对list中元素进行反转和排序 通过指针指向下一个节点
//链表不是数组,没有下标。只能使用迭代器
*/ #include <iostream>
#include <list> using namespace std; void PrintListContents(const list<int>& listInput); int main()
{
std::list<int> a;
a.push_front();
a.push_front(); list<int>::iterator iElementValueTwo;
iElementValueTwo = a.insert(a.begin(),);//insert返回一个迭代器,指向2.
a.push_front();
a.push_front(); PrintListContents(a);// //iElementValueTwo--迭代器,指向2.
a.erase(iElementValueTwo);//删除一个元素:2
cout << "把2删除后显示:" << endl;
PrintListContents(a);// //a.erase(a.begin(), iElementValueTwo);//从开始到2,2不包括。删除。
a.erase(iElementValueTwo, a.end());//从2开始直到最后的所有数据,删除。 return ;
}
void PrintListContents(const list<int>& listInput)
{
std::list<int>::const_iterator iter;
for (iter = listInput.begin(); iter != listInput.end(); ++iter)
cout << *iter << endl;
}
/*cb02c_c++_反转和排序 */ /*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
实例化std::list对象
在list开头插入元素
在list末尾插入元素
在list中间插入元素,插入时间恒定,非常快。数组:中间插入慢。
删除list中的元素
对list中元素进行反转和排序 通过指针指向下一个节点
//链表不是数组,没有下标。只能使用迭代器
*/ #include <iostream>
#include <list> using namespace std; void PrintListContents(const list<int>& listInput); int main()
{
std::list<int> a;
a.push_front();
a.push_front();
a.push_front();
a.push_front();
a.push_front(); PrintListContents(a); //翻转
cout << "数据翻转: " << endl;
a.reverse();
PrintListContents(a); cout << "链表数据排序:" << endl;
a.sort();
PrintListContents(a); return ;
}
void PrintListContents(const list<int>& listInput)
{
std::list<int>::const_iterator iter;
for (iter = listInput.begin(); iter != listInput.end(); ++iter)
cout << *iter << endl;
}
cb02a_c++_数据结构_顺序容器_STL_list类_双向链表的更多相关文章
- cb01a_c++_数据结构_顺序容器_STL_deque类
/*cb01a_c++_数据结构_顺序容器_STL_deque类deque是一个动态数组,比vector更加灵活.两者都属于动态数组deque与vector非常类似deque可以在数组开头和末尾插入和 ...
- cb16a_c++_顺序容器的选用_排序_二分查找
/*cb16a_c++_顺序容器的选用_排序_二分查找顺序容器: 1.vector的优点与缺点 vector优点:排序利用下标,快速排序,做二分查找非常快 2.list的优点与缺点 list优点:插入 ...
- cb09a_c++_顺序容器的操作2-在顺序容器中添加元素_插入数据
cb09a_c++_顺序容器的操作2在顺序容器中添加元素vector不能向前插入数据,list可以用insertc.push_back(t);c.push_front(t);c.insert(p,t) ...
- cb03a_c++_数据结构_顺序容器_STL_stack
/*cb03a_c++_数据结构_顺序容器_STL_stack堆栈:LIFO--Last In First Out后进先出,用于系统程序设计自适应容器(容器适配器),不是独立的容器,是一个适配器栈适配 ...
- cb06a_c++_顺序容器的定义
/*cb06a_c++_顺序容器的定义顺序容器:vector,数组,尾端操作数据,快速随机访问list 链表,快速插入数据deque数组,双端-首尾操作数据,方便两端的数据访问 顺序容器适配器:sta ...
- cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器
cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器map(映射,key不能重复,一对一对的,value_type(1, "one")),mu ...
- cb14a_c++_顺序容器的操作7_赋值与交换(swap)_vector转list
cb14a_c++_顺序容器的操作7_赋值与交换(swap) vector数据赋值给list, slist.assign(svec.begin(), svec.end());//这样可以转 svec- ...
- ca13a_c++_顺序容器的操作6删除元素
/*ca13a_c++_顺序容器的操作6删除元素c.erase(p) //删除迭代器p指向的位置c.erase(b,e) //删除b to e之间的数据,迭代器b包括,e不包括c.clear()//删 ...
- cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size
cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...
随机推荐
- Codeblocks运行按钮变灰,卡程序编译
实际上,当我们点击绿色运行按钮运行之后,.exe文件会开始运行,当我们点击红色调试按钮之后,会开始调试. 因此当我们在运行卡住之后,点击红色调试按钮,实际上并没有真正的结束程序,只是将窗口隐藏起来,我 ...
- 粒子群优化算法对BP神经网络优化 Matlab实现
1.粒子群优化算法 粒子群算法(particle swarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作 ...
- 【ubuntu】开机一直“/dev/sda3:clean, XXX files, XXXX blocks”解决方法
由于该电脑是实验室公用跑模型的机子,在解决过程中,发现是 cuda 导致一直进不了系统.原因是装了两个不同版本的cuda,一个9.2,另一个10.0,因为是公用的,目前尚不清楚,怎么同时装上两个的,也 ...
- 【深度学习】PyTorch之Squeeze()和Unsqueeze()
1. unsqueeze() 该函数用来增加某个维度.在PyTorch中维度是从0开始的. import torch a = torch.arange(0, 9) print(a) 结果: tenso ...
- [Unity2d系列教程] 002.引用外部DLL - C
上一篇我们学习了Unity调用C#生成的外部DLL,但是有时候我们需要访问底层,不能不适用C生成的DLL.下面就让我们一起学习下,C如何生成. 1.创建一个C的控制台程序 2.点击确定->点击下 ...
- ### MySQL主从搭建Position
一.MySQL主从搭建 搭建主从架构的MySQL常用的有两种实现方式: 基于binlog的fileName + postion模式完成主从同步. 基于gtid完成主从同步搭建. 本篇就介绍如何使用第一 ...
- Win2003远程桌面突然无法连接,有没有解决方法?
在日常工作中,运维人员除了接触服务器监控工具外,最常用的应该就是远程桌面了吧.iis7远程桌面是一款绿色小巧的服务器管理工具,更加人性化,管理服务器更是不可测量. 可以管理1000台服务器的远程桌面: ...
- Verilog缺少一个复合数据类型,如C语言中的结构体
https://mp.weixin.qq.com/s/_9UsgUQv-MfLe8nS938cfQ Verilog中的数据类型(Data Type)是分散的,缺少一个复合数据类型:把多个wire, r ...
- 【Mybatis】mybatis3入门
mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...
- URL与URI的联系与区别
作者:daixinye链接:https://www.zhihu.com/question/21950864/answer/154309494来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...