单链表 单链表中节点的定义 typedef struct LNode{ int data;//数据域 struct LNode *next;//定义一个同类型的指针,指向该节点的后继节点 }LNode, *Linklist; LNode是一个数据节点,而单链表是用指针将许多数据节点连接起来的一个线性 ...
分类:
其他好文 时间:
2021-04-22 15:20:13
阅读次数:
0
困扰:之前了解到的删除节点的算法都是:知道了被删除结点的前驱节点和后继节点然后通过修改前驱节点的next就可以达到删除节点的目的。但是题目只给了被删除节点,却没有给被删除节点的前驱节点。因此一时不知道该怎样操作。 解决办法:将被删除节点的后继节点的值复制到被删除节点中,再将被删除节点的后继节点删除就 ...
分类:
其他好文 时间:
2020-10-24 10:21:12
阅读次数:
20
ReentrantReadWriteLock详解 简介 特点: ReentrantReadWriteLock允许多个读线程同时访问,不允许写线程和读线程,写线程和写线程同时访问. 一般情况下,共享数据的读操作远多于写操作,比ReentrantLock提供更好的并发性和吞吐量. 读写锁内部维护两个锁: ...
分类:
其他好文 时间:
2020-07-04 19:08:27
阅读次数:
41
###文章结构 源码:对doReleaseShared()方法的源码进行一些注释 使用场景:介绍doReleaseShared()使用位置,及目的 以写锁开始的队列:分析写锁开始得同步等待队列在唤醒后续读锁节点的过程 以读锁开始的队列 总结 ###源码 具体解析见注释 /** * Release a ...
分类:
其他好文 时间:
2020-06-03 15:54:25
阅读次数:
123
JDK1.7和1.8 HashMap区别: 1. ******* 数组+链表 改成了 ****数组+链表或红黑树; 高位使用红黑算法可以提高操作效率 可以说对java大数据操作提高了很多 所以很多面试喜欢问 2.表的插入方式从头插法改成了尾插法,简单说就是插入时,如果数组位置上已经有元素,1.7将新 ...
分类:
其他好文 时间:
2020-05-24 13:38:47
阅读次数:
74
题意 给定一个DAG,每个点初始有点权$a_i(a_i\in [0,10^9])$,两个人进行博弈,每次选择一个点$(a_i 0)$,将其$a_i$严格减少,将其后继节点更改为任意点权,不能操作的人失败。 做法 出度为$0$的点分到第$0$组 其余点分到第$mex\{v|(u,v)\in E\}$ ...
分类:
其他好文 时间:
2020-05-23 16:44:24
阅读次数:
53
何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍 ...
分类:
其他好文 时间:
2020-05-06 13:52:50
阅读次数:
61
/** * 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。 * 所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。 * 这也就导致了在对链表数据进行删除和添加的时候要明确指定出节点的前驱节点和后继节点。 * @author ...
分类:
其他好文 时间:
2020-03-15 13:37:40
阅读次数:
43
数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和软件工程的基础。当涉及软件工程面试问题时,这是一个关键主题。因此,作为开发人员, ...
分类:
其他好文 时间:
2020-03-14 10:37:49
阅读次数:
281
线索化二叉树的特点是:每一个节点都有前驱和后继节点(第一个和最后一个除外)所以查找某一节点会很容易 缺点:也很明显就是在插入新节点和删除时过于麻烦,实际应用需自己取舍 public class ThreadedBinaryTreeDemo { public static void main(Stri ...
分类:
其他好文 时间:
2020-02-10 13:41:39
阅读次数:
56