1. 单链表的另一个缺陷 (1)单向性:只能从头结点开始高效访问链表中的数据元素 (2)缺陷:如果需要逆序访问单链表中的数据元素,效率将极其低下(O(n2)) 2. 双向链表 (1)设计思路:在“单链表”的结点中增加一个prev指针,用于指向当前结点的前驱结点。 (2)继承层次结构 (3)DualL ...
分类:
其他好文 时间:
2017-07-01 21:43:49
阅读次数:
268
1. 什么是循环链表 (1)概念上 ①任意数据元素都有一个前驱和一个后继 ②所有的数据元素的关系构成一个逻辑上的环 (2)实现上 ①循环链表是一种特殊的单链表 ②尾结点的指针域保存了首结点的地址 2. 循环链表的实现思路 (1)通过模板定义CircleList类,继承自LinkList类 (2)定义 ...
分类:
其他好文 时间:
2017-07-01 19:23:01
阅读次数:
149
题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数) 输入输出格式 输入格式: 第一行为n,表示 ...
分类:
其他好文 时间:
2017-07-01 00:05:11
阅读次数:
150
指数据元素之间的关系。这些关系可以分为:集合线性结构树形结构网状结构。逻辑结构分为:线性结构和非线性结构。集合:除了同属一个对象外不存在相互关系。如:汽车上的人除了同辆车彼此间无其他关系。线性结构:元素间为严格的一对一关系,即一个元素有且只有一个前驱。如:..
分类:
编程语言 时间:
2017-06-30 22:27:17
阅读次数:
126
通常我们所说的删除链表的某个结点,是彻底删除该结点的空间。而要这么做就必须知道其前驱结点。这里的想法是,链表中存储的val是同类型的,仅仅要将该结点的val内容删除就能够了。那么就能够用该结点的后继结点的值覆盖当前结点,然后删除其后继结点,而对于其后继结点而言,该结点就是前驱。 这里仅仅须要考虑当前 ...
分类:
其他好文 时间:
2017-06-30 13:50:55
阅读次数:
108
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。查询即从第一个节点,不断指向下一节点以便获得自己目标节点。删除、插入同理,最后修改目标节点的前后关系即可,以下是模拟实现的过程 ...
分类:
编程语言 时间:
2017-06-28 17:09:35
阅读次数:
228
Day1 4825: [Hnoi2017]单旋 注意到二叉查找树的一个性质:其中序遍历就是所有元素按权值排序的顺序。 所以我们可以离线地把这棵树的中序遍历求出来。然后我们在插入的时候就可以用一个set来维护前驱后继,这样就可以维护出整棵树的形态。 接着我们发现将最大、最小单旋到根后,一定会有一边儿子 ...
分类:
其他好文 时间:
2017-06-25 17:04:24
阅读次数:
485
什么是数据结构? 指数据元素之间的关系。这些关系可以分为: 集合 线性结构 树形结构 网状结构。 逻辑结构分为: 线性结构 和 非线性结构。 集合:除了同属一个对象外不存在相互关系。如:汽车上的人除了同辆车彼此间无其他关系。 线性结构:元素间为严格的一对一关系,即一个元素有且只有一个前驱。如:成绩表 ...
分类:
编程语言 时间:
2017-06-25 10:02:54
阅读次数:
181
线性表是最简单最常用的一种数据结构,在生活中各个方面都有应用。 线性表的定义:线性表大多数情况下是除了第一个位置的数据元素只存在后继元素,最后一个位置的数据元素只存在前驱元素外,所有数据元素都存在前驱和后继的一个有限序列。举个简单的例子就是:字母表中除了 a 只存在后继 b,z 只存在前驱 y之... ...
分类:
其他好文 时间:
2017-06-25 00:15:27
阅读次数:
252
今日得分:10+0+20=30,修改后90+90+100=280 今日题解: T1:题中所给的结构构成一个内向环套树森林,对于每棵环套树,首先树上的每个点的孩子只能留一个最大的,其他的都需要修改,处理后变为一个环上面连一些链,每个链可以断开链首或者断开环上的前驱节点,并且至少要断开一条环上的边,特判 ...
分类:
其他好文 时间:
2017-06-23 23:06:01
阅读次数:
181