首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-09-22 
标准类库 queue模板类的简单实现最近学模板,于是就简单做了个 queue 模板类,没啥技巧性,见笑了……?/* THE P

标准类库 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_ttheSize ;} ;
?

热点排行