哈喽!这里是一只派大鑫,不是派大星。本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习。更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段找到好的方法、路线,让天下没有难学的程序(只有秃头的程序员 2333),学会程序和算法,走遍天下都不怕!

今天我们来一起深入学习一下非常重要以及基础的数据结构——链表(list)

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。


1.C++ 中 list 的介绍

list 是顺序容器的一种。list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素,如图1所示。

在 list 容器中,在已经定位到要增删元素的位置的情况下,增删元素能在常数时间内完成。如图2所示,在 ai 和 ai+1 之间插入一个元素,只需要修改 ai 和 ai+1 中的指针即可。

list 容器不支持根据下标随机存取元素。

2.list的使用

STL里自带的list是双向链表

头文件: <list>

  1. list<int> a;:定义一个int类型的链表a。
  2. Int arr[5]={1,2,3}; list<int> a(arr,arr+3);:从数组arr中的前三个元素作为链表a的初始值。
  3. a.size():返回链表的结点数量。
  4. list<int>::iterator it;:链表定义一个名为it的迭代器(指针)。
  5. a.begin();a.edn();:链表开始和末尾的迭代器指针。
  6. it++; it--;:迭代器指向前一个和后一个元素。
  7. a.push_front(x); a.push_back(x);:在链表开头或者末尾插入x。
  8. a.insert(it,x):在迭代器it的前面插入元素x。
  9. a.pop_front(); a.pop)back();:在删除链表开头或者末尾。
  10. a.erase(it):删除迭代器it所在的元素。
  11. for(it=a.begin();it!=a.end();it++):遍历链表

C/C++ list链表的理解以及使用相关推荐

  1. 通过链表深入理解Java的引用和对象

    在正式介绍重点内容以前,先给像我这样的初学者强调一下 " = " 在引用和对象应用中的作用: 大致是 " = " 左边是引用," = " 右 ...

  2. 希尔排序、快速排序、KMP、链表的理解

    创作人QQ:851301776,邮箱:lfr890207@163.com, 欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点! 个人座右铭: 1.没有横空出世,只要厚积一定发. ...

  3. 【C/C++】链表的理解与使用

    最近不是太忙,整理些东西,工作也许用得到. 1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性.但数组也同样存在一些弊病.如数组的大小在定义时要事先规定, ...

  4. 如何理解C语言链表,如何理解c语言链表

    C语言链表就是一种数据结构,可以在上面动态的进行传输分配还可以定义节点数据类别或者实现对节点的增删改查等 链表是一种常见的基础数据结构,结构体指针在这里得到了充分的借助.链表可以动态的进行传输分配,也 ...

  5. 链表的理解——造孽的儿子、操碎心的老妈和人狠话不多的老爸

    前言 初学C语言,请大佬多提宝贵意见,感激不尽.欢迎各位初学者前来交流. # include<stdio.h> # include<malloc.h>struct Studen ...

  6. 可由一个尾指针唯一确定的链表有_极客算法训练笔记(三),链表详细图解,别再逃避了朋友...

    目录 缓存引爆链表 链表单链表双向链表循环链表双向循环链表 LinkedHashMap实现LRU缓存,源码解析(JDK1.8) 算法 爬楼梯 算法 反转链表 算法 链表环检测 缓存引爆链表 存储结构 ...

  7. 链表用java实现简单单链表linkedlist

    链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 每个结点包括两个部分: 1是存储数据元素的数据域data 2是存储下一个结点地址的指针域p. 相 ...

  8. 面试中必知必会的那些题——单链表倒置

    (准备面试,多看点题.来自原文) 我想你去很多家公司面试的时候,遇到单链表倒置的问题可能比较多,如果一定要给面试题来一个排名,估计也能上top10吧,其实这个题目玩的是技巧和你对单链表的理解,其实我们 ...

  9. c语言中头结点不为零怎么写,C语言不带表头结点的单链表操作

    什么是链表 简单理解为链表的功能与数组功能相似用来存储数据,链表作为一种基本的数据结构在程序开发过程当中经常会使用到.对C语言来说链表的实现主要依靠结构体(可以存储多种数据类型)和指针,所以本文相关内 ...

最新文章

  1. 白月黑羽教python excel_发布程序
  2. jQuery.fn和jQuery.prototype区别。
  3. 杨辉三角 用php写,PHP_PHP写杨辉三角实例代码,复制代码 代码如下: ?php // - phpStudy...
  4. 基于VHDL超声波测距实验
  5. matlab二元方程组,用matlab解一个二元方程组,会的进,得到解再回答
  6. Java讲课笔记19:throw关键字、自定义异常与垃圾回收
  7. 安卓逆向系列教程 4.6 去广告
  8. m3000服务器维修,陕汽德龙新M3000,仪表上有个故障灯,红颜色⭕里有个❌是个什么故障灯了...
  9. ⼤数据可视化技术:可视化技术概述与Echarts⼊⻔
  10. ORB-SLAM2代码阅读笔记(十):sim3求解
  11. 基于网页的微信小程序——摇色子
  12. QQ空间热修复原理深入解析
  13. 学术规范作业——心得体会
  14. 秘籍:MSN好友IP地址随便查
  15. 电报注册_更秘密的电报
  16. VUE同步和异步请求
  17. 计算机cpu的字母,电脑处理器后面的字母你认识几个?不认识跟我来学学(intel篇)...
  18. SQL server2008使用.iso文件安装踩坑
  19. 计算机减法英语,如何用英语表示加减乘除
  20. 如何获得U盘的详细信息

热门文章

  1. web前端之css快速入门
  2. python3 协程 写法_理解Python的协程(Coroutine)
  3. 小程序css之字体镂空
  4. git tig使用技巧_如何使用Tig浏览Git日志
  5. 僵尸肖恩黑胶唱片_建立一个非常适合黑胶唱片的DIY放大器套件
  6. 建立自己的唱机前置放大器
  7. vulkan api_Vulkan开放标准API支持,针对Linux的新游戏以及更多游戏
  8. 使用Xerte创建简单的在线学习资料的指南
  9. Node 连接mysql数据库
  10. java for android的书_JavaForAndroid07