`

标准类库 queue模板类的简单实现

阅读更多

最近学模板,于是就简单做了个 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 ;
} ;
 
0
0
分享到:
评论

相关推荐

    C++ queue 类模板

    自己封装的一个queue, 与大家分享和学习下。

    11.javaQueue 接口及其实现类.zip

    11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue ...

    队列类Queue的C++实现

    队列类queue的c++实现,包括了队列的出对,入队,获取队头元素,清空队列,判断队列空满等常规操作。对初学者很有帮助哈

    一个php缓存Memcache的Queue类库.zip

    php缓存Memcache的Queue类库 下面来看看用法,代码如下: MQ::setupMq('127.0.0.1','11211');//连接 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $...

    一个php缓存Memcache的Queue类库

    php缓存Memcache的Queue类库 下面来看看用法,代码如下: MQ::setupMq('127.0.0.1','11211');//连接 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $value);//添加数据到队列 MQ::add($key, $value);//...

    C++类模板实现的队列

    用C++类模板实现的队列,通过此例子可以清楚理解类模板的使用和数据结构中队列的实现

    c语言实现的模板(list queue stack)

    c语言实现的模板,实现方法是使用void指针和size 包括list queue stack三种

    linux上queue.h 队列的实现

    linux上queue.h,可用于一直实现双向链表.亲测非常好用 linux上queue.h,可用于一直实现双向链表.亲测非常好用 linux上queue.h,可用于一直实现双向链表.亲测非常好用

    struct_queue.zip_C++ queue<struct>_queue<struct_queue的c++实现

    queue的c++实现,利用的是结构,实现了queue的各种功能,但是不建议以此替代标准的queue

    Queue实现类1

    3. Collection接口方法 4. Queue与Deque接口方法 5. 源码与参考资料

    自己的队列类模板 Own queue class template

    自己的队列类模板 Own queue class template Queue ( push, pop , destroy ,front , empty )

    queue的C++实现

    队列的实现C++···························

    用模板实现二叉树以及各种遍历

    用c++的模板类来实现二叉树,其中包含前序遍历,中序遍历,后序遍历,以及层次遍历。用了递归和非递归2中方法

    C语言实现的队列Queue

    数据结构Queue的实现在queue.h中, testQ为queue的用法

    queue类常用函数

    queue队列是我们常用的类,这里我们将对queue类中常用的6个函数进行讲解,帮助大家学习。

    C语言头文件 QUEUE.H

    C语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言...

    JMS中topic和queue两种实现方式

    JMS中topic和queue两种实现方式

    C和C++类库手册说明

    大部分类库集成的chm文件,比如C++的I/O库,string库,map库,queue库,stack库;C的memory库,math库等。

    fast-wait-free-queue, 并发队列实现的基准框架.zip

    fast-wait-free-queue, 并发队列实现的基准框架 快速等待空闲队列这是评估并发队列性能的基准测试框架。 目前,它包含4 个并发队列。 它们是:一个快速等待队列 wfqueueafek的Morrison和 lcrqkallimanis的Fatourou和...

Global site tag (gtag.js) - Google Analytics