输入一个二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。不能创建任何新的结点,只能调整树中结点指针的指向。 ...
分类:
其他好文 时间:
2016-08-14 23:42:11
阅读次数:
208
在解释完内核中的链表基本知识以后,下面解释链表的重要接口操作: 1. 声明和初始化 实际上Linux只定义了链表节点,并没有专门定义链表头,那么一个链表结构是如何建立起来的呢?让我们来看看LIST_HEAD()这个宏: #define LIST_HEAD_INIT(name) { &(name), ...
分类:
系统相关 时间:
2016-08-14 13:09:49
阅读次数:
313
在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略 ...
分类:
编程语言 时间:
2016-08-11 22:17:27
阅读次数:
168
数组:内存上是连续的存储空间; 链表:内存地址可以是不连续的,每个链表的节点包括原来的内存和下一节点的信息(单向链表一个;双向链表两个)。 数组优点: 1、占用内存空间少; 2、数组内的数据可以随机访问; 3、数据查找效率较高(内存连续); 链表优点: 1、方便数据的删除、插入; 2、长度可变,扩展 ...
分类:
编程语言 时间:
2016-08-08 12:53:51
阅读次数:
174
这道题目的解决方案是双向链表,数据结构本身并不复杂,但对于四种情况的处理不够细致,主要体现在以下几点: 分类讨论不全面,没有考虑特殊情况(本身不需要操作,需要互换的两元素相邻) 没有考虑状态4改变后对其他操作的影响 没有灵活运用数学知识(求偶只需要全部减去奇数即可) 以下贴出AC代码 #includ... ...
分类:
其他好文 时间:
2016-08-08 12:31:04
阅读次数:
123
一、问题描述输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。二、实现思路在二叉搜索树中,每个结点都有两个分别指向其左、右子树的指针,左子树结点的值总是小于父结点..
分类:
编程语言 时间:
2016-08-08 01:05:31
阅读次数:
303
此题为小白书里数据结构基础关于线性表的题目 翻译请戳 http://luckycat.kshs.kh.edu.tw/ 解题思路 当时直接用动态的双向链表模拟了。。。 但是用双向链表很纠结啊,如果你加入头结点之后的查找会变得很麻烦, 如果不加头结点的话,插入节点会很麻烦。。。 但已经写了就不想改了。。 ...
分类:
其他好文 时间:
2016-08-08 00:36:08
阅读次数:
149
list容器实质是一个双向链表,list不提供随机访问功能,当删除其中一个元素,指向其他元素的迭代器依然有效。对于任何位置的元素插入或移除,list永远是常数时间 ...
分类:
编程语言 时间:
2016-08-07 18:32:49
阅读次数:
186
双向链表实现源码public class DuLinkList<T>{//定义一个内部类Node,Node实例代表链表的节点private class Node{//保存节点的数据private T data;//指向上个节点的引用private Node prev;//指向下个节点的引用priva ...
分类:
其他好文 时间:
2016-08-05 19:21:11
阅读次数:
140
LinkedList的源码分析 LinkedList的源码分析一、总体分析1.1 链表的结点类二、双向链表操作相关方法2.1 linkFirst(E e)2.2 linkLast(E e)2.3 linkBefore(E e, Node succ)2.4 unlinkFirst(Node f)2.5 ...
分类:
其他好文 时间:
2016-08-04 22:55:03
阅读次数:
421