/*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类_双向链表的更多相关文章

  1. cb01a_c++_数据结构_顺序容器_STL_deque类

    /*cb01a_c++_数据结构_顺序容器_STL_deque类deque是一个动态数组,比vector更加灵活.两者都属于动态数组deque与vector非常类似deque可以在数组开头和末尾插入和 ...

  2. cb16a_c++_顺序容器的选用_排序_二分查找

    /*cb16a_c++_顺序容器的选用_排序_二分查找顺序容器: 1.vector的优点与缺点 vector优点:排序利用下标,快速排序,做二分查找非常快 2.list的优点与缺点 list优点:插入 ...

  3. cb09a_c++_顺序容器的操作2-在顺序容器中添加元素_插入数据

    cb09a_c++_顺序容器的操作2在顺序容器中添加元素vector不能向前插入数据,list可以用insertc.push_back(t);c.push_front(t);c.insert(p,t) ...

  4. cb03a_c++_数据结构_顺序容器_STL_stack

    /*cb03a_c++_数据结构_顺序容器_STL_stack堆栈:LIFO--Last In First Out后进先出,用于系统程序设计自适应容器(容器适配器),不是独立的容器,是一个适配器栈适配 ...

  5. cb06a_c++_顺序容器的定义

    /*cb06a_c++_顺序容器的定义顺序容器:vector,数组,尾端操作数据,快速随机访问list 链表,快速插入数据deque数组,双端-首尾操作数据,方便两端的数据访问 顺序容器适配器:sta ...

  6. cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器

    cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器map(映射,key不能重复,一对一对的,value_type(1, "one")),mu ...

  7. cb14a_c++_顺序容器的操作7_赋值与交换(swap)_vector转list

    cb14a_c++_顺序容器的操作7_赋值与交换(swap) vector数据赋值给list, slist.assign(svec.begin(), svec.end());//这样可以转 svec- ...

  8. ca13a_c++_顺序容器的操作6删除元素

    /*ca13a_c++_顺序容器的操作6删除元素c.erase(p) //删除迭代器p指向的位置c.erase(b,e) //删除b to e之间的数据,迭代器b包括,e不包括c.clear()//删 ...

  9. cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size

    cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...

随机推荐

  1. 深入理解JS:执行上下文中的this(二)

    目录 序言 Function.prototype.bind() 方法 箭头函数 参考 1.序言 在 深入理解JS:执行上下文中的this(一) 中,我们主要深入分析全局环境和函数环境中函数调用的 th ...

  2. 树链剖分 (求LCA,第K祖先,轻重链剖分、长链剖分)

      2020/4/30   15:55 树链剖分是一种十分实用的树的方法,用来处理LCA等祖先问题,以及对一棵树上的节点进行批量修改.权值和查询等有奇效. So, what is 树链剖分? 可以简单 ...

  3. 【转】网页的title左边的小图片怎么添加

    首先,代码中的title标签里是不能加图片的.但是浏览器标提栏前面是可以加一个小图标的. 解决方案:第一步,做一个16 X 16像素的ico格式的图标.具体操作方法是,先在Photoshop中做一个透 ...

  4. Alink漫谈(五) : 迭代计算和Superstep

    Alink漫谈(五) : 迭代计算和Superstep 目录 Alink漫谈(五) : 迭代计算和Superstep 0x00 摘要 0x01 缘由 0x02 背景概念 2.1 四层执行图 2.2 T ...

  5. Excel表格中无法中间插入新行列! 提示:在当前工作表的最后一行或列中,存在非空单元格,解决方案

    excel中新增行列时报错: 提示:在当前工作表的最后一行或列中,存在非空单元格,所以无法插入新行或新列.

  6. python常见面试题讲解(十)数字颠倒

    题目描述 描述: 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001 输入描述: 输入一个int整数 输出描述: 将 ...

  7. Chisel3 - util - Pipe

    https://mp.weixin.qq.com/s/WeFesE8k0ORxlaNfLvDzgg   流水线,用于添加延迟.   参考链接: https://github.com/freechips ...

  8. 面试题: SpringBoot 的自启动原理

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 引言 不论在工作中,亦或是求职面试,Spring Boot 已经成为我们必知必会的技能项.除了比较老旧的 ...

  9. Java实现 LeetCode 380 常数时间插入、删除和获取随机元素

    380. 常数时间插入.删除和获取随机元素 设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构. insert(val):当元素 val 不存在时,向集合中插入该项. remove( ...

  10. Java实现 LeetCode 114 二叉树展开为链表

    114. 二叉树展开为链表 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 class S ...