最近学模板,于是就简单做了个 queue 模板类,没啥技巧性,见笑了……
/* THE PROGRAM IS MADE BY PYY */
#include <iostream>
using namespace std ;
//////////////////////////////////////////////////////////////////////////
//
// Decleration
//
template <class T>
class QueueItem ;
template <class T>
class Queue ;
//////////////////////////////////////////////////////////////////////////
//
// QueueItem
//
template <class T>
class QueueItem {
friend class Queue<T> ;
private:
T elem ;
QueueItem *prev ;
QueueItem *next ;
QueueItem (const T &t = *(new T), QueueItem *p = 0, QueueItem *n = 0)
: elem(t), prev(p), next(n) {}
} ;
//////////////////////////////////////////////////////////////////////////
//
// Queue
//
template <class T>
class Queue {
public:
Queue () : head(new QueueItem<T>), tail(new QueueItem<T>), theSize(0) {
head->next = tail ;
tail->prev = head ;
}
~Queue () { delete head ; delete tail ; }
bool empty () const { return head->next == tail; }
size_t size() const { return theSize ; }
void push (const T &t) {
QueueItem<T> *p = new QueueItem<T>(t, tail->prev, tail) ;
tail->prev->next = p ;
tail->prev = p ;
++theSize ;
}
T & front () { return head->next->elem ; }
const T & front () const { return head->next->elem ; }
T & back () { return tail->prev->elem ; }
const T & back () const { return tail->prev->elem ; }
void pop () {
if (empty())
return ;
QueueItem<T> *poldest = head->next ;
head->next = poldest->next ;
delete poldest ;
--theSize ;
}
private:
QueueItem<T> *head ;
QueueItem<T> *tail ;
size_t theSize ;
} ;
分享到:
相关推荐
自己封装的一个queue, 与大家分享和学习下。
11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue ...
队列类queue的c++实现,包括了队列的出对,入队,获取队头元素,清空队列,判断队列空满等常规操作。对初学者很有帮助哈
php缓存Memcache的Queue类库 下面来看看用法,代码如下: MQ::setupMq('127.0.0.1','11211');//连接 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $...
php缓存Memcache的Queue类库 下面来看看用法,代码如下: MQ::setupMq('127.0.0.1','11211');//连接 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $value);//...
用C++类模板实现的队列,通过此例子可以清楚理解类模板的使用和数据结构中队列的实现
c语言实现的模板,实现方法是使用void指针和size 包括list queue stack三种
linux上queue.h,可用于一直实现双向链表.亲测非常好用 linux上queue.h,可用于一直实现双向链表.亲测非常好用 linux上queue.h,可用于一直实现双向链表.亲测非常好用
queue的c++实现,利用的是结构,实现了queue的各种功能,但是不建议以此替代标准的queue
3. Collection接口方法 4. Queue与Deque接口方法 5. 源码与参考资料
自己的队列类模板 Own queue class template Queue ( push, pop , destroy ,front , empty )
队列的实现C++···························
用c++的模板类来实现二叉树,其中包含前序遍历,中序遍历,后序遍历,以及层次遍历。用了递归和非递归2中方法
数据结构Queue的实现在queue.h中, testQ为queue的用法
queue队列是我们常用的类,这里我们将对queue类中常用的6个函数进行讲解,帮助大家学习。
C语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言...
JMS中topic和queue两种实现方式
大部分类库集成的chm文件,比如C++的I/O库,string库,map库,queue库,stack库;C的memory库,math库等。
fast-wait-free-queue, 并发队列实现的基准框架 快速等待空闲队列这是评估并发队列性能的基准测试框架。 目前,它包含4 个并发队列。 它们是:一个快速等待队列 wfqueueafek的Morrison和 lcrqkallimanis的Fatourou和...