C++ 模板应用 实现一个Queue 队列
2018-03-31 19:07
856 查看
#include<iostream> using namespace std; template <typename T> class Queue { public: Queue() { Node<T> *node=new Node<T>(); node->data=NULL; node->next=NULL; qfront=qrear=node; } template <typename T> struct Node { Node<T> *next; T data; }; bool empty() const; void pop(); T & front(); T & back(); void push(const T &); int size() const; private: Node<T> *qfront,*qrear; }; template <typename T> T &Queue<T>::back() { if(!empty()) return qrear->data; } template <typename T> T &Queue<T>::front() { if(!empty()) { Node<T> *p=qfront->next; return p->data; } } template <typename T> bool Queue<T>::empty() const { if(qfront==qrear) return true; else return false; } template <typename T> void Queue<T>::pop() { if(!empty()) { Node<T> *p=qfront->next; qfront->next=p->next; if(p==qrear) qrear=qfront; delete p; p=NULL; } } template<typename T> void Queue<T>::push(const T & t) { Node<T> *node=new Node<T>; node->data=t; node->next=NULL; qrear->next=node; qrear=node; } template<typename T> int Queue<T>::size() const { Node<T> *p=qfront; if(empty()) return 0; else { int i=1; while(p->next!=qrear) { p=p->next; i++; } return i; } } int main() { Queue<int> q; q.push(1); q.push(2); q.pop(); q.pop(); q.pop(); cout<<q.size()<<endl; getchar(); return 0; }
相关文章推荐
- C++ 模板应用 实现一个Queue 队列
- C++利用模板实现一个队列
- 队列(queue) 之 c++模板实现(友元函数和运算符重载)
- 一个智能指针模板的实现及应用
- C++模板应用——让模板定义和实现分离的方法
- C++中模板的声明和实现应该放在同一个文件中
- 一个消息队列类的实现C++
- C++模板实现队列
- 用两个栈(Stack)实现一个队列(Queue)
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- C++实现的队列queue
- c++模板实现的队列
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍(一)
- 程序员面试宝典之数据结构基础----C++两个栈实现一个队列功能
- 循环队列的实现(Queue, C++版)
- 数据结构学习系列三-单向循环链表(c++实现且应用模板)
- C++ 学习练手 - 数组型队列的模板实现
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
- 一个智能指针模板的实现及应用
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?