QueueNode.htemplate class LinkQueue;templateclass QueueNode{private: friend class LinkQueue; friend ostream& operator& q); //函数要访问QueueNode的私有...
分类:
其他好文 时间:
2015-01-22 13:13:27
阅读次数:
120
在之前的两篇博客(线程安全的无锁RingBuffer的实现,多个写线程一个读线程的无锁队列实现)中,分别写了在只有一个读线程、一个写线程的情况下,以及只有一个写线程、两个读线程的情况下,不采用加锁技术,甚至原子运算的循环队列的实现。但是,在其他的情况下,我们也需要尽可能高效的线程安全的队列的实现。本...
分类:
编程语言 时间:
2015-01-11 22:47:53
阅读次数:
307
<?php
/**
*第三种——循环顺序队列的实现方法
*此方法是解决前两种方法的缺点,利用循环队列的方法达到了最优时间复杂度和空间复杂度
*
*
*/
classSqQueue3{
constARR_MAX=20;
private$SqArr;
private$front;
private$rear;
//初始化队列
publicfunction__construct(){
$t..
分类:
Web程序 时间:
2015-01-09 01:43:56
阅读次数:
188
<?php
/**
*第二种——非循环顺序队列的实现方法
*此方法,对第一种实现方法进行了优化,出队时不再移动元素
*仅仅改变头指针的位置即可
*
*此方法的优缺点:
*优点:插入和删除的时间复杂度都已是O(1),效率比较高
*缺点:元素删除后,前面的空间就无法再进行利用,造成空..
分类:
Web程序 时间:
2015-01-09 01:43:49
阅读次数:
187
<?php
/**
*第一种——非循环顺序队列的实现方法
*队列的头元素在为数组的下标为0的元素
*这种方法的优缺点:
*优点:头元素始终在下标为0的第一个元素,因此不需要设置头指针
*缺点:元素出队是会移动大量元素,时间复杂度为O(n),效率比较低
*
*/
classSqQueue{
private$Sq..
分类:
Web程序 时间:
2015-01-09 01:43:21
阅读次数:
142
无锁队列
第一篇文章末尾我们提到的《无锁队列的实现》(陈皓(hào)),该文末尾提到的“用数组实现无锁队列”,即用 RingBuffer 实现的无锁队列。
分类:
其他好文 时间:
2015-01-05 10:44:19
阅读次数:
305
优先队列的实现 1 #include //std::size_t 2 #include //std::swap 3 #include 4 5 template class PriorityQueue { 6 public: 7 PriorityQueue(){} 8 9 bool...
分类:
其他好文 时间:
2015-01-02 18:47:31
阅读次数:
129
前段时间在知乎上看到这样一个小题目: 用基本类型实现一队列,队列要求size是预先定义好的的。而且要求不可以使用语言自带的api,如C++的STL。普通的实现很简单,但是现在要求要尽可能的时间和空间复杂度的优化,要和语言自带的api比较时间和空间。这个队列还要支持如下的操作: constru...
分类:
其他好文 时间:
2014-12-30 23:20:26
阅读次数:
237
queue.c功能函数:#include "queue.h"
static void CopyToNode(Item item,Node *pn)
{
pn->item = item;
}
static void CopyToItem(Node *pn, Item *pi)
{
*pi = pn->item;
}
/* 把队列初始化为空,就是设置尾指针为NULL并设置项数(items成员)为...
分类:
编程语言 时间:
2014-12-23 12:32:22
阅读次数:
220
这个在官网中list支持,有实现。补充一下栈,队列的特性:1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征2.队列(queue)是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删...
分类:
编程语言 时间:
2014-12-17 12:14:33
阅读次数:
216