List(双向链表)
List是一种双向链表结构,可以从第一个元素开始删除、插入,也可以从最后一个元素删除、插入,下面介绍一下 List 中常用的几个函数;
一、List 中的 begin 和 end 函数 ;
和其他几种数据结构差不多,都是用来从第一个元素,访问到最后一个元素,返回的是当前指针;
list<int> L ;
*(L.begin()) // 输出第一个元素
*(L.end()) // 输出最后一个元素的下一个元素
二、List 中的 rbegin 和 rend 函数
也和其他几种数据结构差不多,从最后一个元素访问到第一个元素; 返回值如果需要存入一个变量中,这个变量应该这样定义
list<int>::reverse_iterator iter ;
list<int> L ;
iter = L.rbegin() ;
*iter // 输出最后一个元素
iter = L.rend() ;
*iter // 输出第一个元素前面的一个元素
三、List 中的 empty 函数
list<int> L ;
L.empty() ; // 如果链表为空则返回 true ,否则返回 false ;
四、List 中的 size 函数
list<int> L(5 , 10) ;
L.size() ; // 返回链表中元素的个数
五、List 中的 front 和 back 函数
list<int> L(5,10) ;
L.front() ; // 返回第一个元素
L.back() ; // 返回最后一个元素
六、List 中的 assign 函数
assign 函数用来对链表对象的重新分配 ;
list<int> L1 ;
list<int> L2 ;
L1.assign(5,10) ; // 向链表中添加 5 个元素 10 ;
L1.assign(5,11) ; // 把原来的 5 个元素 10 改为 11 ;
L2.assign( L1.begin() , L1.end() ) ; 将L1中的元素复制给L2 ;
int a[] = {1,2,3,4,5} ;
L2.assign(a,a+5) ; // 把数组 a 中的数据复制到 L2 中 ;
七、List 中的 push_front、push_back、pop_front、pop_back 函数
这几个函数就是双向链表的特殊之处,可以从头插入、删除,也可以从尾部插入和删除
list<int> L(5,10) ;
L.push_back(5) ; // 从最后插入一个元素 5 ;
L.pop_back() ; // 删掉最后一个元素
L.push_front(5) ; //在第一个元素前面插入一个元素 5 ;
L.pop_front() ; // 将第一个元素删除掉
八、List 中的 insert 函数
insert 函数中的参数可以有两个,也可以由三个,当参数有两个时,第一个代表在某个元素的前面,第二个参数代表要插入的数值;
当参数有三个时,第一个代表在某个元素之前插入,第二个元素和第三个元素代表要插入的范围;
list<int> L(5,10) ;
L.insert(L.begin(),5) ; //在第一个元素前插入一个元素 5 ;
L.insert(L.begin(),5,2) ; // 在第一个元素前插入 5 个元素 2 ;
int a[] = {8,2,3,4,5} ;
L.insert(L.begin(),a,a+5) ; // 将数组 a 插入到第一个元素之前 ;
九、List 中的 erase 函数
erase 用来删除链表中的数据元素
list<int> L(5,10) ;
L.erase(L.begin()) ; //删除链表中的第一个元素
L.erase( L.begin() , L.end() ) // 删除链表中的所有元素,相当于 L.assign(0) ;
十、List 中的 resize 函数
resize 和 其他数据结构一样,重新分配链表的大小 ;
list<int> L(5,10) ;
L.resize(3) ; // 将链表中原来的 5 个元素,缩短为现在的 3 个元素 ;
L.resize(8) ; // 将链表中原来的 3 个元素,扩大为现在的 8 个元素,扩大部分默认赋初值为 0 ;
L.resize(10,2) ; // 将链表中原来的 8 个元素,扩大为现在的 10 个元素,扩大部分赋值为 2 ;
十一、List 中的 clear 函数
list<int> L(5,10) ;
L.clear() ; // 清空链表中的所有元素, 相当于L.assign(0) , 还相当于L.erase(L.begin() , L.end()) ;
List(双向链表)的更多相关文章
- 学习Redis你必须了解的数据结构——双向链表(JavaScript实现)
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/ 下午分享了JavaScript实现单向链表,晚上就来补充下双向链表吧.对链表 ...
- 双向链表、双向循环链表的JS实现
关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法: 单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...
- 剑指Offer面试题:25.二叉搜索树与双向链表
一.题目:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.比如输入下图中左边的二叉搜索树,则输出转换之后的 ...
- Linux 内核数据结构:Linux 双向链表
Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到.我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为 ...
- Linux 内核数据结构:双向链表
Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到.我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为 ...
- 线性表-双向链表(LinkedList)
双向链表:如图1-3 所示,会把当前header拆分开,重新插入一个Entry<E>. LinkedList源码 0.首先这个类中的两个变量 private transient Entry ...
- Shuffling Machine和双向链表
1. 双向链表 https://github.com/BodhiXing/Data_Structure 2. Shuffling Machine https://pta.patest.cn/pta/t ...
- MS - 1 - 把二元查找树转变成排序的双向链表
## 1. 把二元查找树转变成排序的双向链表 ## ### 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. ### 要求不能创建任何新的结点,只调整指针的指向. 10 ...
- javascript中的链表结构—双向链表
1.概念 上一个文章里我们已经了解到链表结构,链表的特点是长度不固定,不用担心插入新元素的时候新增位置的问题.插入一个元素的时候,只要找到插入点就可以了,不需要整体移动整个结构. 这里我们了解一下双向 ...
- Java自己实现双向链表LinkList
/** * <p> * Node 双向链表实体类 * <p> * * @author <a href="mailto:yangkj@corp.21cn.com& ...
随机推荐
- C语言入门(11)——switch分支语句
C语言提供了一种用于多分支选择的switch语句, 其一般形式为: switch(表达式) { case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; .... ...
- 关于iOS7越狱的整理
目前越狱非常的不稳定,已经白苹果第三次了.中途遇见了不少问题,去各大论坛找了下解决办法,算是搬运工. iOS7越狱过程中打开手机上的“evasi0n7”闪退,怎么办?1. 请先尝试卸载手机“evasi ...
- NET-A-PORTER为何难以模仿?_全文显示_生活福布斯中文网
NET-A-PORTER为何难以模仿?_全文显示_生活福布斯中文网 NET-A-PORTER为何难以模仿?
- js模块化认识1
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- hdu5461 Largest Point(沈阳网赛)
Largest Point Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- ebs清除并法管理器所清除的表
In this Document Goal Solution References Applies to: Oracle Concurrent Processing - Version 1 ...
- hdu 2102 A计划(双层BFS)(具体解释)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...
- 能够免费做商业站点的CMS讨论
眼下国内使用过PHPCMS DEDECMS织梦 科讯CMS 帝国.Discuz.Ecshop等,可是他们都是个人非盈利免费,商业.政府.机构授权收费. 使用什么CMS能够免费做商业站点呢? ...
- pywebkitgtk安装出现的问题
configure 文件里 print sys.prefix 等不能支持python3的原因 依据http://blog.csdn.net/jklfjsdj79hiofo/article/detail ...
- CTabCtrl - 如何使用TabCtrl控件
CTabCtrl - 如何使用TabCtrl控件 建立一个基于对话框的MFC应用程序TabCtrlTest Step 1:在资源视图中,新建对话框资源,资源ID:IDD_TabCtrlExample_ ...