生活中有非常多队列的影子,比方打饭排队,买火车票排队问题等,能够说与时间相关的问题,一般都会涉及到队列问题;从生活中,能够抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列...
分类:
编程语言 时间:
2014-12-23 15:28:11
阅读次数:
237
题目链接:http://poj.org/problem?id=3126题意:给两个四位数n,m,将n变成m需要多少步,要求每次只能改变n的某一位数,即改变后的数与改变前的数只有一位不同,且每次改变后的数都是素数。分析:筛选素数+bfs,枚举每一位数字进行修改,修改后还是素数的进入队列,循环出队入队,...
分类:
其他好文 时间:
2014-12-16 22:26:35
阅读次数:
261
如何快速获取队列中的最大值?最简单的办法,用一个for循环遍历,复杂度为o(n).解法二:用大顶堆来实现,复杂度为哦o(1),但是入队和出队复杂度变为o(logN),堆中的每一个元素还得有个指针指向它的后继元素。解法三:可以使用两个栈来模拟队列,从右边的栈进入元素相当于入队,出队时,只有当左边的栈为...
分类:
其他好文 时间:
2014-12-13 12:09:16
阅读次数:
173
在当将数据写到文件上时,通常该数据先由内核复制到缓存中,如果该缓存尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓存以便存放其他磁盘块数据时,再将该缓存排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称之为延迟写。..
分类:
数据库 时间:
2014-12-09 15:55:25
阅读次数:
185
题目:用两个队列实现一个栈
算法思路:
现有两个队列q1与q2,入栈:如果q1与q2都为空,那么我们选择q1入栈也就是入队列,比如q1入栈 1 2 3 4 ;现在要出栈,后进先出那么4要出栈。但是q1是一个
队列,先进先出,那么 1 2 3出队列 q2 1 2 3 入队列,q1中此时剩余4,把4出对列达到出栈的效果。 这个时候如果我们又加入一个元素5,那么我们应该把5放到
q1还是q2,...
分类:
编程语言 时间:
2014-12-09 12:23:45
阅读次数:
221
算法思路:
一个栈用来入队列,一个栈用来出队列:
现有两个栈s1 和s2;s1用来入栈,比如 队列进入 1 2 3 4 5 那么s1进栈 1 2 3 4 5 ,现在要出队列,意思就是要1先出来;
那么我们把栈s1的数据取出来都压到栈s2当中,那么栈s2就是 5 4 3 2 1 ;s2再出栈,此时1出栈就模拟出出队列的效果;
编写代码:
// QueueFrom2Stack.cp...
分类:
编程语言 时间:
2014-12-08 19:40:39
阅读次数:
215
《算法》中二叉查找树一节的习题:按层遍历二叉查找树。可以使用队列来管理二叉查找树中的节点,节点按照如下方法入队出队:节点x入队当队列不为空时使用队列的第一个元素first如果节点first.left不为空则将fisrt.left入队如果节点first.right不为空则将first.right入队将...
分类:
其他好文 时间:
2014-12-06 00:00:43
阅读次数:
380
用Java模拟一个堆栈或者队列数据结构。
首先得明白堆栈和队列的数据结构:
堆栈:先进后出
队列:先进先出
LinkedList中刚好有addFirst()和addLast()方法。
[java] view
plaincopyprint?
public class Stack
{
public static void m...
分类:
编程语言 时间:
2014-12-05 14:18:45
阅读次数:
236
3.5 实现一个MyQueue类,该类用两个栈来实现一个队列。解答队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO), 用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈, 出队列如果第二个栈不为空,则直接从第二个栈出队列,否则将第一个栈的数据依次压入第二个栈,然后出栈...
分类:
其他好文 时间:
2014-12-04 21:25:24
阅读次数:
168
堆,是优先队列最常用的一种实现方式。在优先队列中,每个元素都被赋予了一个优先级,而每次出队时都让优先级最高的元素出队。堆,则是一种存储优先队列的方法,特指以一棵树形式存储的优先队列。最常用的是二叉堆,但既然是专门介绍数据结构,就不妨说全一些,我们取4个典型的堆进行比较,见下表(此表及表下备注,来自于...
分类:
编程语言 时间:
2014-12-04 10:00:14
阅读次数:
169