接着上面的GCD封装,以下进行列子验证 1.导入GCD.h 2.创一个串行队列: - (void)serailQueue{ //创建出队列 GCDQueue *queue = [[GCDQueue alloc]initSerial]; //运行队列中的线程 [queue execute:^{ NSL ...
分类:
其他好文 时间:
2017-05-01 18:20:25
阅读次数:
239
BFS过程: 一:訪问顶点V,并标记V为已经訪问 二:顶点V入队列 三:假设队列非空。进行运行,否则算法结束 四:出队列取得对头顶点u,假设顶点未被訪问,就訪问该顶点,并标记该顶点为已经訪问 五:查找u的第一个邻接节点w 六:假设w不存在。则转到步骤三,否则循环运行 a. 假设w没有被訪问过。则先把 ...
分类:
其他好文 时间:
2017-05-01 18:19:42
阅读次数:
246
题意:给T足数据,然后每组一个n和k,表示n个数,k表示最大同意的能力差,接下来n个数表示n个人的能力,求能力差在k之内的区间有几个 分析:维护一个区间的最大值和最小值,使得他们的差小于k,于是採用单调队列 普通单调队列做法: #include<cstdio> #include<cstring> # ...
分类:
其他好文 时间:
2017-05-01 11:09:44
阅读次数:
124
一、队列(Queue) 队列是一种特殊的线性表,它只允许在表的前段(front)进行删除操作,只允许在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。 对于一个队列来说,每个元素总是从队列的rear端进入队列,然后等待该元素之前的所有元素出队之后,当前元素才能出 ...
分类:
编程语言 时间:
2017-04-30 14:04:04
阅读次数:
280
链接: http://poj.org/problem?id=2259 题意: 排队吃饭,有n个team,每当一个人过来的时候,只要前面有他认识的人,就会直接插到那个team的后面,否则从后面排队 然后就是询问你每次出队的是谁 题解: 用两个队列就可以了,主队列里面是team编号,然后每个team再开 ...
分类:
其他好文 时间:
2017-04-29 17:39:08
阅读次数:
163
1. 引言 在并发编程中我们有时候需要使用线程安全的队列。 如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。 使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现, 而非阻塞的实现方式则可以使用循环CAS的方式 ...
分类:
编程语言 时间:
2017-04-25 00:41:00
阅读次数:
181
在数据结构中,我们都学习过队列和栈,我们知道栈的基本特征是后进先出,这个当然也很好理解,用一句歇后语给大家通俗得解释一下,就是: 砌墙的砖瓦——后来居上。很容易明白,就是后面来的反倒在最上面,当然你取的话,是不是得从最上面开始取呀,很容易明白的。再来说说队列,队列的特征是先进先出,就是说先来的先走, ...
分类:
其他好文 时间:
2017-04-25 00:34:38
阅读次数:
197
UVA 1203 - Argus 题目链接 题意:给定一些注冊命令。表示每隔时间t,运行一次编号num的指令。注冊命令结束后。给定k。输出前k个运行顺序 思路:用优先队列去搞,任务时间作为优先级。每次一个任务出队后,在把它下次运行作为一个新任务入队就可以 代码: #include <cstdio> ...
分类:
其他好文 时间:
2017-04-24 14:05:33
阅读次数:
129
问题描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解法分析: 首先题目要求用两个栈实现一个队列,那么就要先分析为什么这么做。队列的特点就像排队的“先到先得”一样,即先入队的就先出队;而栈则正好相反,特点是“后进先出”,那么问题来了怎么用“后进先出”的得 ...
分类:
其他好文 时间:
2017-04-24 14:04:39
阅读次数:
96
Deque允许在队列的头部或尾部进行出队和入队操作 LinkedBlockingDeque是一个线程安全的双端队列实现,可以说他是最为复杂的一种队列,在内部实现维护了前端和后端节点,但是其没有实现读写分离,因此同一时间只能有一个线程对其进行操作。在高并发中性能要远低于其他BlockingQueue。 ...
分类:
其他好文 时间:
2017-04-24 10:00:29
阅读次数:
139