java集合系列之LinkedList源码分析 LinkedList数据结构简介 LinkedList底层是通过双端双向链表实现的,其基本数据结构如下,每一个节点类为Node对象,每个Node节点包含该节点的数据和分别指向前一个前一个和后一个节点的引用。LinkedList内部维护两个成员变量fir ...
分类:
编程语言 时间:
2018-06-30 14:58:33
阅读次数:
166
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号【程序猿声】 01 循环链表 1.1 什么是循环链表? 前面介绍了单链表,相信大家还记得相关的概念。其实循环链表跟单链表也没有差别很多,只是在某些细节上的处理方式会稍稍不同。 在此之前,大家可以先思考一个问题:单链表中,要找到其中某个节点只需 ...
分类:
其他好文 时间:
2018-06-30 00:23:27
阅读次数:
221
前言 二叉树我们都是知道,一个节点有两个子节点,分别为左右子节点,树形结构则分叉左右子树。如何把二叉树转换成双向链表,方式方法有许多,这里主要介绍一种方法,直接在二叉树本身的左右链上做文章,采用递归的方式。 方法步骤如下: 1. 先转换做子树为链式结构,其递归到做子树最左边的叶子节点; 2. 链表最 ...
分类:
其他好文 时间:
2018-06-28 16:49:04
阅读次数:
167
本篇文章将介绍两种自己动手实现可重入锁的方法。 我们都知道JDK中提供了一个类 ,利用这个类我们可以实现一个可重入锁,这种锁相对于 来说是一种轻量级锁。 重入锁的概念 重入锁实际上指的就是一个线程在没有释放锁的情况下,可以多次进入加锁的代码块。 这种情况下,如果我们加的锁不是支持可重入的锁,那么b方 ...
分类:
其他好文 时间:
2018-06-25 01:20:14
阅读次数:
275
面试36题: 题:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路:由于输入的一个二叉搜索树,其左子树大于右子树的值,这位后面的排序做了准备,因为只需要中序遍历即可,将所有的节点保存到一个列表,。 ...
分类:
其他好文 时间:
2018-06-24 17:00:20
阅读次数:
161
队列是一种特殊的线性表,仅能在线性表的两端进行操作(队头和队尾),具有“先进先出”的特性。1)使用原生数组实现了StaticQueue,时间复杂度均为O(1) 2)使用单链表基于组合关系实现了LinkQueue,入队操作时间复杂度为O(n),可是使用双向链表解决。
分类:
其他好文 时间:
2018-06-22 15:26:49
阅读次数:
156
阻塞队列 再写阻塞列队之前,我写了一篇有关queue集合相关博客,也主要是为这篇做铺垫的。 网址:【java提高】 queue集合 在这篇博客中我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻 ...
分类:
编程语言 时间:
2018-06-20 22:42:48
阅读次数:
254
java.util.LinkedList LinkedList是实现了List接口的双链表实现,拥有list的所有方法并且允许所有元素(包括null)。 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地 ...
分类:
编程语言 时间:
2018-06-13 20:59:01
阅读次数:
186