队列(链表形式)实现_c++
2014-06-22 15:01
323 查看
template<class T> class Queue; template<class T> ostream& operator<<(ostream&, const Queue<T>&); template<class T> class QueueItem{ friend class Queue<T>; friend ostream& operator<< <T> (ostream&, const Queue<T>&); QueueItem(const T& t):item(t),next(0){} T item; QueueItem *next; }; template<class T> class Queue{ friend ostream& operator<< <T> (ostream&, const Queue<T>&); public: Queue():head(0), tail(0){} Queue(const Queue& rhs); Queue& operator=(const Queue&); ~Queue(); T& Front() const; void Pop(); void Push(const T&); size_t Size() const; inline bool Empty() const; private: QueueItem<T> *head; QueueItem<T> *tail; void CopyElements(const Queue&); }; template<class T> Queue<T>::Queue(const Queue& rhs):head(0),tail(0) { CopyElements(rhs); } template<class T> Queue<T>& Queue<T>::operator=(const Queue& rhs) { if (this == &rhs) { return *this } while(!Empty()) { Pop(); } CopyElements(rhs); return *this; } template<class T> Queue<T>::~Queue() { while (!Empty()) { Pop(); } } template<class T> T& Queue<T>::Front() const { if (Empty()) { exit(1); } return head->item; } template<class T> void Queue<T>::Pop() { if (!Empty()) { QueueItem<T> *p = head; head = head->next; delete p; } } template<class T> void Queue<T>::Push(const T& val) { QueueItem<T> *p = new QueueItem<T>(val); if (Empty()) { head = tail = p; } else { tail->next = p; tail = p; } } template<class T> size_t Queue<T>::Size() const { QueueItem<T> *p = head; size_t count = 0; while(p != 0) { count++; p = p->next; } return count; } template<class T> bool Queue<T>::Empty() const { return head == 0; } template<class T> void Queue<T>::CopyElements(const Queue& q) { for (QueueItem<T> *p = q.head; p != 0; p = p->next) { Push(p->item); } } template<class T> ostream& operator<<(ostream& os, const Queue<T>& q) { os<<"<"; for (QueueItem<T> *p = q.head; p != 0; p = p->next) { os<<p->item<<" "; } os<<">"; return os; }
相关文章推荐
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- 队列 queue 的链表实现操作 -C++
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- C++实现队列--数组实现和链表实现
- C++模板链表实现优先级队列
- 利用 C++ 单向链表实现队列
- C++用模板实现双链表和队列
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
- C++中采用链表实现队列
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- 队列(数组形式)实现_c++
- JAVA实现最简单的双向链表、队列与栈(内部使用链表形式存储)
- 【第五节】Java代码实现队列----【链表的存储形式】
- C++模板链表实现优先级队列
- 数据结构_队列_用链表动态建立释放节点实现队列各种操作_C++实现
- C++实现队列(链表版)
- 队列的顺序实现,包括在链表形式实现中的所有功能
- C++用模板实现双链表和队列
- C++模板链表实现优先级队列
- C++模板链表实现优先级队列