//头文件queue.h #pragma once #include<assert.h> #include<iostream> using namespace std; typedef int ElemType; #define MAX_SIZE 8 typedef struct Queue { E ...
分类:
其他好文 时间:
2016-04-11 11:57:18
阅读次数:
135
第一部分:顺序循环队列的实现 1 //循环队列的实现 2 #define OK 1 3 #define MAXSIZE_Q 10 4 //#define OVERFLOW -2 5 #define ERROR 0 6 7 typedef int Status; 8 typedef int QEle....
分类:
其他好文 时间:
2015-06-28 18:47:21
阅读次数:
161
头文件:
#pragma once
#include
#include
using namespace std;
template
class CQueue
{
public:
CQueue(size_t sz = INIT_SZ);
~CQueue();
public:
bool full()const;
bool empty()const;
void show()c...
分类:
编程语言 时间:
2015-05-29 10:10:46
阅读次数:
208
循环队列的实现,本人语文表达能力有限,但写的代码简单易懂,这就不做更多的解释,直接看代码。
1:头文件:#include"DQueue.h"#pragma once
#include
#include
#define ElemType int
#define SizeFull 20
typedef struct Queue
{
ElemType *data;
int sizefull;
...
分类:
其他好文 时间:
2015-05-12 01:44:04
阅读次数:
158
复习一下队列与循环队列的实现(C语言)1、单链队列: 1 typedef struct QNode{ //若不写typedef,在C中每次定义QNode需要在前面加上struct,而C++不必 2 QElemType data; 3 struct QNode *next; 4 }QN...
分类:
其他好文 时间:
2015-04-10 22:18:30
阅读次数:
114
循环队列的基本结构如下:
front 属性 表示 队头,rear 属性表示 队尾。
在队空时 :q.rear 和 q.front 都为0 ,其余时刻q.rear 指向 队尾的后继节点,q.front指向 队头.
当在队尾插入元素时,q.rear + 1 ,在删除 队头元素时 ,q.front + 1,这样的操作 会造成 “假溢出”问题。
图(d) 就是一种 假溢出 问题,q.rea...
分类:
其他好文 时间:
2015-03-06 16:03:43
阅读次数:
185
在之前的两篇博客(线程安全的无锁RingBuffer的实现,多个写线程一个读线程的无锁队列实现)中,分别写了在只有一个读线程、一个写线程的情况下,以及只有一个写线程、两个读线程的情况下,不采用加锁技术,甚至原子运算的循环队列的实现。但是,在其他的情况下,我们也需要尽可能高效的线程安全的队列的实现。本...
分类:
编程语言 时间:
2015-01-11 22:47:53
阅读次数:
307
前段时间在知乎上看到这样一个小题目: 用基本类型实现一队列,队列要求size是预先定义好的的。而且要求不可以使用语言自带的api,如C++的STL。普通的实现很简单,但是现在要求要尽可能的时间和空间复杂度的优化,要和语言自带的api比较时间和空间。这个队列还要支持如下的操作: constru...
分类:
其他好文 时间:
2014-12-30 23:20:26
阅读次数:
237