双向链表的结点包含前驱指针和后继指针,队列入队操作是在双向链表尾部添加元素,队列的出队操作是把双向链表的头结点删除,判断队列是否为空只要判断双向链表的头指针是否指向了NULL即可。
# include
# include
using namespace std;
struct queueNode
{
int val;
queueNode *pre;
queueNode *next;...
分类:
其他好文 时间:
2014-08-02 12:55:03
阅读次数:
193
第一题:机器翻译模拟可以用STL里的vector或list实现插入、删除、查找操作。第二题:乌龟棋动态规划用 f(i, j, k, t) 表示分别用了i张卡片1、j张卡片2、k张卡片3、t张卡片4能得到的最大分数,则f(i, j, k, t) = max{ f(i-1, j, k, t), f(i,...
分类:
其他好文 时间:
2014-08-02 12:43:13
阅读次数:
188
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
假设其数组长度为n,其算法复杂度为o(log(n))
代码:
#include
using namespace std;
bool BinarySearch(int data[],int start, int end, int number){
while(start...
分类:
其他好文 时间:
2014-08-01 09:14:51
阅读次数:
228
二叉排序树
二叉排序树是一个基础的树的数据结构。应用非常多。它的特性就是,左孩子小于parent,右孩子大于parent.
寻找节点
寻找节点就是直接根据数值的大小,从root节点开始遍历,大于当前遍历节点就向它的右子树查找,相反则查找它的左子树。然后返回。
查找最大最小节点
直接根据root节点,遍历到最右就是最大节点,遍历到最左,就是最小节点。
插入节点
...
分类:
其他好文 时间:
2014-08-01 00:01:20
阅读次数:
247
// p 为指向非空单链表中第一个结点的指针,本算法逆转链表并返回逆转后的头指针。基本思路是:如果链表中只有一 个结点,则空操作,否则先逆转a2开始的链表,然后将 a1联接到逆转后的链表的表尾(即a2)之后。 1 //递归方法逆转 单链表 2 Node* RecReverseList(Node* ....
分类:
其他好文 时间:
2014-07-31 12:25:36
阅读次数:
218
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作...
分类:
其他好文 时间:
2014-07-30 20:07:04
阅读次数:
195
题目:
给定一个单链表,只给出头指针head:
1、如何判断是否存在环?
2、如何知道环的长度?
3、如何找出环的连接点在哪里?
4、带环链表的长度是多少?
解法:
1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。
2、对于问题2,记录下问题1的碰撞点p,sl...
分类:
其他好文 时间:
2014-07-29 18:03:02
阅读次数:
191
题目大意:
四个操作:
I X Y 在x位置插入y
D x 删除x位置的数
R x y 用y替换x位置上的数字
Q x y 求出[x,y]上的最大子序列的和。
思路分析:
对于动态维护序列肯定是splay了。
现在就考虑以下几个问题。
之前我们知道线段树处理连续的子序列的和是用区间合并的。那splay上怎么做。
考虑边界,如儿子为 0 或者是冗余节点怎么办?
初始化的...
分类:
其他好文 时间:
2014-07-27 11:09:32
阅读次数:
257
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。具体思路:把头结点的数据直接copy到要删除的结点处,然后头指针向后移动一个结点,再free掉原来的头指针指向的结点,这样等于把要删除的结点删除了。当链表只有一个结点或者要删除的结点是头结点或尾结点时,这种方法也是成立的,所以不需要做特...
分类:
其他好文 时间:
2014-07-25 13:54:31
阅读次数:
204
二叉查找树(Binary Search Tree)在很多情况下可以良好的工作,但它的限制是最坏情况下的渐进运行时间为 O(n)。平衡查找树(Balanced Search Tree)的设计则是保证其高度在最坏的情况下为 O(log n),其插入、删除和查找可以实现渐进运行时间 O(log n)。本文...
分类:
其他好文 时间:
2014-07-24 14:44:35
阅读次数:
282