1.把二元查找树转变成排序的双向链表。 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode { int m_nValue; //...
分类:
编程语言 时间:
2015-08-30 19:37:20
阅读次数:
230
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNo...
分类:
其他好文 时间:
2015-08-30 19:21:40
阅读次数:
160
rlist.h代码:#ifndef __LIST_H#define __LIST_H#include #include #define UT_BASE(TYPE) \ struct { \ TYPE *prev; ...
分类:
其他好文 时间:
2015-08-28 21:16:31
阅读次数:
253
原文:http://www.cnblogs.com/dolphin0520/p/3932906.html在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。使用非阻塞队列的时候有一个很大问题就是:它不...
分类:
其他好文 时间:
2015-08-28 10:49:04
阅读次数:
237
纸上得来终觉浅,绝知此事要躬行
--陆游 问渠那得清如许,为有源头活水来 --朱熹
LinkedList是一个继承AbstractSequentialList的双向链表,它也可以被当做堆栈、队列或者双端队列进行操作。
LinkedList实现了List接口,能对它进行队列操作。
LinkedList实现了Seque接口,能将LinkedList当做双端队列进行使...
分类:
编程语言 时间:
2015-08-28 00:49:34
阅读次数:
308
一、链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内...
分类:
其他好文 时间:
2015-08-27 11:07:06
阅读次数:
180
1.简介 前面3.1的单链表在操作过程中有一个缺点,就是后面的节点无法直接找到前面的节点,这使很多操作都得从头到尾去搜寻节点,算法效率变得非常低,解决这个问题的方法就是重新定义链表的节点使每个节点有两个指针,一个指向前驱一个指向后驱,这就是双向链表。节点定义templateclass DLLNode...
分类:
其他好文 时间:
2015-08-26 23:50:15
阅读次数:
304
1329: 一行盒子
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 872 Solved: 176
[Submit][Status][Web
Board]
Description
你有一行盒子,从左到右依次编号为1, 2, 3,…, n。你可以执行四种指令:
1 X Y表示把盒子X移动到盒子Y左边(如果X已经在Y的左边则忽...
分类:
其他好文 时间:
2015-08-25 21:39:42
阅读次数:
193
这次的代码比较长,原因是比之前的Vector实现增加了许多的操作,而且毕竟指针操作嘛,处理起来稍微麻烦一点。
List实现中非常重要的一点,就是定义一个头指针和一个尾指针,这样可以避免对很多的特殊情况的处理,当链表为空时就是头指针指向尾指针,另外一个就是迭代器的实现,
list的迭代器的实现比vector要麻烦许多,因为内存不连续,所有采用了内部嵌套类的方式,重载了*(解引用),++EXP(前...
分类:
编程语言 时间:
2015-08-25 16:37:20
阅读次数:
168