题目: Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查询k在区间内的后继(后继定义为大于x,且最小的数) ...
分类:
其他好文 时间:
2017-09-30 13:23:21
阅读次数:
133
1:这里分为两种插入情况:一种是 插入位置在中间,另一种是插入位置在末尾。两种情况有一点不同:插入位置在中间时需要把p的原后继节点的前驱指针指向新插入的节点。 // ConsoleApplication24.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #i ...
分类:
其他好文 时间:
2017-09-27 21:53:49
阅读次数:
188
图论dfs可以说主宰了图论的大部分题目,所以对于他的理解非常重要: 深度优先遍历就如他的名字所说:只要可能,就在图中尽量深入,深度优先搜索总是对最近被发现的点最近发现的节点v出发进行搜索。直到该点的出发边都被发现为止,搜索则回到前驱节点,(v是由这个点发现的),在搜索其前驱节点的边,重复该过程直到源 ...
分类:
其他好文 时间:
2017-09-27 09:58:48
阅读次数:
111
双向链表的概念比较简单,只是在之前单链表的的基础上,每个结点多增加了一个指向直接前驱的指针。双向链表的存储结构定义如下:typedefstructDulNode{
ElemTypedata;
structDulNode*prior;
structDulNode*next;
}DulNode,*DuLinkList;双向链表的操作基本上和单链表的操作一模..
分类:
其他好文 时间:
2017-09-21 09:47:45
阅读次数:
76
?注:未经博主同意,不得转载。 前面讨论的单链表,每个结点中只有一个指针域,用来存放指向后继结点的指针,因此,从某个结点出发只能顺时针往后查找其他结点。若要查找某个结点的直接前驱,则需要从头指针开始沿链表探寻,处理起来十分不方便。为克服单链表的这一缺点,可引入双向链表。 双向链表中每一个结点含有两个 ...
分类:
其他好文 时间:
2017-09-20 17:56:12
阅读次数:
151
预备函数: 将参数转化为二进制数后最后一位1所在的位置,并将此位置上的1转化为十进制。 修改数据: 修改原始数据某一元素的值 求前k项和: 只需要把e(k)以及其前驱结点的值累加即可 ...
分类:
编程语言 时间:
2017-09-19 18:00:12
阅读次数:
201
栈(stack)是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。 栈又称为后进先出(LastIn First Out)的线性表,简称LIFO结构。 栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的 ...
分类:
其他好文 时间:
2017-09-17 13:45:10
阅读次数:
208
https://www.luogu.org/problem/show?pid=2234 用Treap维护,每次查询这个数的前驱与后继哪个和它差值更小。 由于查询一个数时在Treap走出的路径必定经过它的前驱与后继,故直接在走的过程统计答案就可以了。 ...
分类:
其他好文 时间:
2017-09-16 20:24:43
阅读次数:
138
已知有一个单向循环链表,其每个结点中含三个域:prior,data 和 next,其中 data 域为数据域,next 为指向后继结点的指针域,prior 也为指针域,但它的值为空 (NULL) ,试编写算法将此单向循环链表改为双向循环链表,即使 prior 成为指向前驱结点的指针域。 输入格式 输 ...
分类:
其他好文 时间:
2017-09-10 13:36:02
阅读次数:
183
线性表反映数据之间的关系是一对多一的关系,每个节点都有唯一的前驱,唯一的后继。它可以采用顺序存储,也可以采用链式存储。本章写的是顺序存储的实现。 ...
分类:
其他好文 时间:
2017-09-09 19:44:37
阅读次数:
133