Problem Description有一个包含n个数字的序列,刚开始时它的第i个数字为i。光标刚开始指向第一个数字(1),现在我们有如下几种操作:1 -光标左移(保证左边有数字)。2 -光标右移(保证右边有数字)。3 x -在光标前面加入一个数字。4 x -在光标后面加入一个数字。5 -删除光标前...
分类:
其他好文 时间:
2014-11-07 00:51:25
阅读次数:
233
双向队列Time Limit: 1000MS Memory limit: 65536K题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。现在给你一系列的操作,请输出最后队列的状态;命令格式:LINXX表示一个整数,命令代表左边进队操.....
分类:
其他好文 时间:
2014-11-06 21:44:58
阅读次数:
182
LinkedHashMap继承自HashMap,相关基本操作性能略低于HashMap,由于需要额外代价维护链表。其遍历操作是通过操作该双向链表实现,而非内部散列表数组,因此性能为O(size)比HashMapO(capacity)更高。
支持两种顺序遍历:元素插入顺序(重复put不算)和最近使用优先顺序(调用put和get类似LRU),默认是按照元素插入顺序遍历。通过构造函数传入true可以实现最近使用优先遍历,每次put或get操作时,将该元素直接重新放置到链表头结点后面来实现最近使用优先遍历。
Link...
分类:
其他好文 时间:
2014-11-06 20:06:39
阅读次数:
205
LinkedList实现了List和Deque接口,其中Deque是一个双端队列,可以在头部和尾部两端添加和删除元素,因此LinkedList既可以当作先进先出的队列,也可以当作后进先出的栈。
LinkedList采用双向链表方式实现,因此插入、删除元素效率比较高,但不支持随机访问。
多线程环境下LinkedList不能保证线程安全,因此对其结构修改的操作应当程序员来保证线程安全,其迭代器支持fail-fast,迭代过程中试图发现是否发生修改,若修改了容器则抛出ConcurrentModificationE...
分类:
其他好文 时间:
2014-11-04 21:14:20
阅读次数:
338
本文双链表介绍部分参考自博文数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现。 1 双链表介绍 双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便...
分类:
编程语言 时间:
2014-11-02 19:38:56
阅读次数:
441
Description:请实现以下基于双向链表的list类enum Error_code{ success, underflow, overflow};template struct Node{ List_entry entry; Node *next; Node *back;};template ...
分类:
其他好文 时间:
2014-11-01 21:44:19
阅读次数:
442
对于双向链表就是在单向链表的基础上加了一个向前的结构体指针。对于一些操作的思想更加的简单。麻烦的事情就是要判断的内容更多了。因为内核链表中运用到的都是双向链表。所以要学习内核链表。就先要会对双向链表进行基本的操作。比如新增和显示。 内核链表中的实现思想类似与面向对象的思想,成员和方法分开写...
分类:
其他好文 时间:
2014-10-30 20:46:48
阅读次数:
267
第一题:题目大意:给出N个数的数列,如果相邻的两个数加起来是偶数,那么就可以把这两个数消掉,求最多能消掉多少数。解题过程:1.先自己手工模拟了几组数据,发现不管消除的顺序如何,最终剩下的是一定的。所以就可以每次任意找两个奇偶性相同的消掉。于是就想到可以用双向链表来模拟。2.更好的方法:直接用一个栈来...
分类:
其他好文 时间:
2014-10-27 21:08:55
阅读次数:
177
题目要求:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解决思路: 1. 根据观察可知,双向链表顺序即为二叉树的中序遍历结果----->采用中序遍历+递归; 2. 中序遍历顺序为:左+中+右,传入一个变量pre。 pre可...
分类:
其他好文 时间:
2014-10-26 18:16:35
阅读次数:
210
码完第一次编译执行竟然就成功了。。。高兴~问题描写叙述:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建不论什么新的结点,仅仅调整指针的指向。比如: 10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表4=6=8=10=12=14=...
分类:
编程语言 时间:
2014-10-26 12:56:10
阅读次数:
161