1、先来看一看LinkedList类的字段和构造方法

size记录链表的长度,first永远指向链表的第一个元素,last永远指向链表的最后一个元素

提供两个构造方法,一个无参的构造方法,一个接受一个Collection对象为参数的构造方法

first和last的类型都是Node,Node是LinkedList类中的一个私有的静态内部类,定义非常简单

Node类中定义了三个字段,数据域item,后继元素next,前驱元素prev,而且都是接受泛型的

2、来看第一个方法linkFirst(E e)

这是在链表的头部添加一个元素

  1)如果链表为空时,first和last都指向同一个节点

  2)如果链表不为空,则在第一个元素之前插入新节点,并让first指向新的节点;

由上述可知:

LinkedList是一个链式结构,由两个指针分别指向第一个节点和最后一个节点,中间的节点由next和prev链式指向;

因为存在next和prev两个域,LinkedList是一个双向的结构,构成双向链表;

每插入一个新的元素,都会创建一个新的Node节点对象;

3、从链表头部删除一个元素:unlinkFirst(Node<E> f)

从双向链表的头部删除一个元素,并返回删除元素的数据域;

得到first指向元素的后继,如果没有后继元素,直接把last置空,如果有后继元素,则把这个后继元素的prev域置空;

4、从链表中删除一个元素:E unlink(Node<E> x)

从上述删除过程中需要注意的是,前驱和后继元素可能为空;如果为空就需要对first和last两个指针做特殊处理;

最新文章

  1. Extjs扩展:封装Plupload
  2. iOS 如何在整个屏幕中都能实现滑动返回的效果
  3. IIS如何设置可以让.aspx后缀的文件直接下载
  4. KeyValue Config
  5. css margin 参数
  6. Linux服务器集群系统(二)--转
  7. mysql的两阶段提交协议
  8. Atitit.软件guibuttonand面板---os区-----linux windows搜索文件 目录
  9. 两个有序list合并
  10. fopen()函数
  11. 【Eclipse】修改项目访问名称
  12. shell的shift用法
  13. 基于Armitage的MSF自动化集成攻击实践
  14. 雷林鹏分享:jQuery EasyUI 数据网格 - 条件设置行背景颜色
  15. cout关闭输出缓冲,调试用
  16. keystore密钥文件使用的算法-PBKDF2WithHmacSHA1 和Scrypt
  17. uniGUI 通过SessionList操作另外的登录用户
  18. 【Linq】常用语法汇总
  19. .Net Discovery 系列之五--深入浅出.Net实时编译机制(上)
  20. day12 python学习 装饰器

热门文章

  1. 2019-2020Nowcoder Girl初赛题解
  2. CSP/NOIP 2019 游记
  3. [Nest] 03.nest之提供者 provider
  4. 自定义ResultMap查询,这里的关联写法只能用于不分页
  5. opencv中的高维矩阵Mat
  6. 浏览器进程线程时间循环、与vue netTick的实现原理
  7. 重装系统win10教程(激活系统、office下载、分区)
  8. 移远模组-BC95-工作模式之间关系
  9. 最长回文子串(动规,中心扩散法,Manacher算法)
  10. 通过实现接口runnable实现多线程