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 ...
随机推荐
- 解释一下,@SpringBootApplication
解释一下,@SpringBootApplication其实就是以下三个注解的总和 @Configuration: 用于定义一个配置类 @EnableAutoConfiguration :Spring ...
- [SD心灵鸡汤]005.每月一则 - 2015.09
精彩的激励人生的话都是从成功者嘴里说出来的,他们成功的过程我们仅仅知道一二,结果却是名满天下.既然看这个激励语,就是想要成功的人,所以大家好好读懂,然后执行,那么你离成功就不远了! 1.万里寻山历百艰 ...
- 求最长非降(递增)子序列LIS的长度,及注意事项
非降序列(Increasing Sequence)例如: (1) 完全递增型序列:S={1,3,6,7,9} (2) 部分存在等于的序列:S={1,3,3,6,9} S的非降子序列:由原序列S的元素组 ...
- 完美解决报错Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'
Failed to convert value of type 'java.lang.String' to required type 'java.util.Date' 首先这个错误的意思是 前台页面 ...
- MySQL8.0 忘记密码、重置密码
修改my.cnf [mysqld] 域中添加skip-grant-tables 重启mysqld服务 systemctl restart mysqld 重新使用空密码登录,直接敲回车 mysql -u ...
- CentOS安装Python3.5
1. 安装python3.5可能使用的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel s ...
- 一篇文章带你吃透 Docker 原理
容器的实现原理 从本质上,容器其实就是一种沙盒技术.就好像把应用隔离在一个盒子内,使其运行.因为有了盒子边界的存在,应用于应用之间不会相互干扰.并且像集装箱一样,拿来就走,随处运行.其实这就是 Paa ...
- Source Insight无限试用期修改方法
修改路径:C:\ProgramData\Source Insight\4.0\si4.lic 字段: Date="2020-01-20" Expiration="2020 ...
- Java实现 蓝桥杯VIP 算法提高 统计单词数
算法提高 统计单词数 时间限制:1.0s 内存限制:512.0MB 问题描述 统计输入英文文章段落中不同单词(单词有大小写之分, 但统计时忽略大小写)各自出现的次数. 输入段落中所含单词的总数不超过1 ...
- Java实现 蓝桥杯 算法提高 快速排序
试题 算法提高 快速排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a ...