双向链表:
就是有双向指针 即 双向的链域
链结点的结构:
┌────┬────┬────────┐
│data│next│previous│
└────┴────┴────────┘
双向链表不必是双端链表(持有对最后一个链结点的引用),双端链表插入时是双向的
有两条链:一条从头到尾,一条从尾到头,删除遍历时也是双向的
/**
* 双向链表
*
* @author s...
分类:
编程语言 时间:
2014-10-26 01:41:27
阅读次数:
255
第一题:题目大意:给出一个N*M的矩阵,定义一条路径的权值为经过的所有点权值的最大值.求一条从第一行到第N行的路径,使得路径权值最小.N,Mn 无解一个点)。2.AC算法(双向链表+堆优化贪心):先贴一段官方题解:借鉴网络流中的残余流思想,用堆来维护解决。映射建大根堆,记录每一个数值在堆中的位置好方...
分类:
其他好文 时间:
2014-10-23 22:19:11
阅读次数:
184
双向链表概述双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继next和直接前驱prev。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。为了标识链表的头和尾,将第一个元素的prev指针和最后一个元素的next指针设置为NULL要反向遍...
分类:
其他好文 时间:
2014-10-23 14:18:14
阅读次数:
160
1.把二元查找树转变成排序的双向链表 ?题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 ?? 10 ?/ \ ?6?14 ?/ \ / \ 4?8 12 16 ?转...
分类:
编程语言 时间:
2014-10-22 16:08:23
阅读次数:
276
ngx_queue作为顺序容器链表,它优势在于其可以高效地执行插入、删除、合并操作,在插入删除的过程中,只需要修改指针指向,而不需要拷贝数据,因此,对于频繁修改的容器很适合。此外,相对于STL list,它还具有以下特点:
自身实现了排序功能
轻量级,不负责内存的分配
自身支持两个链表的合并...
分类:
其他好文 时间:
2014-10-22 10:07:12
阅读次数:
279
Linux内核-进程管理
1.进程
#内核调度的对象是线程,不是进程
#对Linux而言,线程只是特殊的进程
#进程提供两种虚拟机制:虚拟处理器、虚拟内存
#创建进程通过fork()来从父进程复制创建进程
2.进程描述符
#任务队列:双向链表(每一项都是task_struct--->进程描述符)
#Linux通过slab分配器...
分类:
系统相关 时间:
2014-10-19 14:19:49
阅读次数:
214
关键是搞懂题目(不知道LRUCache的只能自己google了)。
然后用双向链表来模拟cache被get和set。但是naive implementation会exceed time limit。所以最大的关键是用一个HashMap来记录key在链表中的位置,这样子每次查询是O(1)的时间,否则O(n)。
这个也是很经典的用Map来加速双向链表查询的思路(前提是key要唯一)。
i...
分类:
系统相关 时间:
2014-10-18 12:37:51
阅读次数:
328
在linux内核中用的非常多的一种链表是:双向链表。内核中对所用的进程的管理就是通过双向链表来实现的。所以对链表的操作非常的常用也非常的重要,因此内核通过提供一个通用的方法来帮助我们方便的对双链表实现各种操作。structlist_head{structlist_head*next,*prev;}0,对双向..
分类:
系统相关 时间:
2014-10-17 15:43:47
阅读次数:
269
问题
LinkedList、ArrayList各自的使用场景,如何确认应该用哪一个呢?
精华回答
一言以蔽之,在大部分情况下,使用ArrayList会好一些。
一、耗时上各有优缺点。ArrayList稍有优势。
List只是一个接口,而LinkedList、ArrayList是List的不同实现。LinkedList的模型是双向链表,而ArrayLis...
分类:
其他好文 时间:
2014-10-17 10:13:55
阅读次数:
285