23..【摆脱list链表的束缚、让你爱上链表】(一)

简介: 23..【摆脱list链表的束缚、让你爱上链表】

(一)、定义及其初始化

1.list 和vector的区别

链表相比于vector,优点在于方便插入和删除,缺点是随机访问比较慢。

2.【list链表初始化

list<数据类型> 函数名;

3.【设定空间初始化】

list<数据类型> 函数名(a,b); 设定a个空间,元素为b.

4.动态链表赋值动态链表】

list<数据类型>函数名1(函数名2); 把动态链表2复制给动态链表1

5.【利用迭代器复制动态链表】

list<数据类型>函数名1(函数名2.begin(),函数名2.end()); 动态链表二复制给动态链表1

6.【普通数组复制给链表】

list<数据类型>函数名1(函数名2,sizeof(函数名2)/sizeof(int));

6.1代码展示:
#include <list>
using namespace std;
int main()
{
    list<int> list_a;       //初始化为0
    list<int> list_b(4,88);      //开辟四个空间,且每个元素都为88;
    list<int> list_c(list_b);     // 动态链表复制给动态链表
    list<int> list_d(list_b.begin(), list_b.end());       //利用迭代器的方法
    int s[] = { 2,5,8 };
    list<int> list_e(s, s + sizeof(s)/sizeof(int));       //普通数组复制给链表
}
6.2效果展示:

(二)、list的基本属性

1.【链表的长度】

函数名.size()

2.【链表的清空操作】

函数名.clear()

3.【判断链表是否为空】

函数名.empty()

4.【获取链表第一个元素】

函数名.front()

5.【获取链表最后一个元素】

函数名.back()

6.【链表与链表的交换】

函数名.swap()

7.【链表的排序】

函数名.sort() 默认升序

8.实战项目

8.1代码展示:
#include <list>
using namespace std;
int main()
{
 list<int> list_a; //初始化为0
 int s[4] = { 2,5,8 };
 list<int> list_b(s, s + sizeof(s)/sizeof(int)); //普通数组复制给链表
 int size;
 size = list_a.size(); //链表长度
 bool is_list = list_a.empty(); //链表是否为i空
 list_b.push_front(1); //在头部插入
 list_b.push_back(2); //在尾部插入
 int a=list_b.front(); //获取第一个
 int b=list_b.back(); //获取最后一个
 // list_b.clear();
 list_a.swap(list_b);
 list_a.sort(); // 对链表进行排序,默认升序
 return 0;
}
8.2效果展示:

(三)、list链表的应用

1.【头部插入一个数据】

函数名.push_front()

2.【尾部插入一个数据】

函数名.push_back()

3.【多元插入数据】

函数名.insert(函数名.begin(),n) 从哪开始 插入谁

4.【多元插入数据2】

函数名.insert(函数名.begin(),n,m) 从哪开始 插入几个 插入谁



相关文章
|
存储 C++
C++的list-map链表与映射表
```markdown C++ 中的`list`和`map`提供链表和映射表功能。`list`是双向链表,支持头尾插入删除(`push_front/push_back/pop_front/pop_back`),迭代器遍历及任意位置插入删除。`map`是键值对集合,自动按键排序,支持直接通过键来添加、修改和删除元素。两者均能使用范围for循环遍历,`map`的`count`函数用于统计键值出现次数。 ```
230 1
|
存储 C++
C++的list-map链表与映射表
这篇教程介绍了C++中`list`链表和`map`映射表的基本使用。`list`链表可通过`push_front()`、`push_back()`、`pop_front()`和`pop_back()`进行元素的添加和删除,使用迭代器遍历并支持在任意位置插入或删除元素。`map`是一个键值对的集合,元素自动按键值排序,可使用下标操作符或`insert()`函数插入元素,通过迭代器遍历并修改键值对,同时提供`count()`方法统计键值出现次数。教程中包含多个示例代码以帮助理解和学习。
250 2
|
C++ 容器
【C++进阶】深入STL之list:高效双向链表的使用技巧
【C++进阶】深入STL之list:高效双向链表的使用技巧
218 0
|
存储 NoSQL Redis
Redis第四弹,Redis实现list时候做出的优化ziplist(压缩链表,元素少的情况),可更好的节省空间list——(内部编码:quicklist)Object encoding
Redis第四弹,Redis实现list时候做出的优化ziplist(压缩链表,元素少的情况),可更好的节省空间list——(内部编码:quicklist)Object encoding
|
存储 Python
链表(Linked List)详解
链表(Linked List)详解
211 0
|
测试技术 C语言
如何用C语言实现无头单向非循环链表Single List ?
这篇文档介绍了一个关于单链表数据结构的实现和相关操作。单链表是一种线性数据结构,每个元素(节点)包含数据和指向下一个节点的指针。文档中列出了单链表的图示,并提供了C语言实现单链表的代码,包括动态申请节点、打印链表、头插、尾插、头删、尾删、查找和在特定位置插入或删除节点等函数。 此外,文档还包含了三个测试用例(TestSList1至TestSList4),展示了如何使用这些函数创建、修改和操作单链表。这些测试用例涵盖了插入、删除、查找等基本操作,以及在链表中特定位置插入和删除节点的场景。
138 0
|
存储 算法 Linux
【C/C++ 线性表】C++ 从零开始实现 双向循环链表(Exploring Doubly Circular Linked List in C++)
【C/C++ 线性表】C++ 从零开始实现 双向循环链表(Exploring Doubly Circular Linked List in C++)
289 0
|
应用服务中间件 nginx
Nginx源码阅读:ngx_list_t 链表
Nginx源码阅读:ngx_list_t 链表
219 0
|
大数据 Java 程序员
「LeetCode合集」链表(List)及经典问题
「LeetCode合集」链表(List)及经典问题
106 0
Streamのlist链表转换
Streamのlist链表转换
128 0