链式队列
2016-04-12 15:25
351 查看
#ifndef QUEUELI_H #define QUEUELI_H template<class Object> class Queue { public: Queue(); ~Queue(); bool isEmpty() const; const Object & getFront() const; void enqueue(const Object & x); Object dequeue(); void makeEmpty(); private: struct ListNode //这里的struct不知道为啥不能够换成class,换成class有错误, { Object element; // 这个是节点里边的数据, ListNode *next; ListNode(const Object & theElement,ListNode *n = 0) : element(theElement), next(n) {} }; ListNode *front; ListNode *back; }; template<class Object> Queue<Object>::Queue() { front = back = 0; } template<class Object> Queue<Object>::~Queue() { makeEmpty(); } template<class Object> void Queue<Object>::makeEmpty() { while(!isEmpty()) dequeue(); } template<class Object> bool Queue<Object>::isEmpty() const { return front == 0; } template<class Object> const Object & Queue<Object>::getFront() const { if(isEmpty()) throw "Queue is empty."; return front->element; } template<class Object> void Queue<Object>::enqueue(const Object &x) { if(isEmpty()) back = front = new ListNode(x); else back = back->next = new ListNode(x); } template<class Object> Object Queue<Object>::dequeue() { Object frontItem = getFront(); ListNode *old = front; front = front->next; delete old; return frontItem; } #endif
#include <iostream> #include "Queueli.h" using namespace std; int main() { Queue<int> myQ; myQ.enqueue(3); myQ.enqueue(6); myQ.enqueue(31); myQ.enqueue(12); cout << myQ.getFront() << endl; myQ.dequeue(); //cout << myQ.getFront() << endl; cout << myQ.dequeue() << endl; for(int i = 0; i < 5; i++) { for(int j = 0; j < 4; j++) myQ.enqueue(j); while(!myQ.isEmpty()) cout << myQ.dequeue() << endl; } return 0; }
相关文章推荐
- thinkphp输出表格
- MySQL查询指定时间的数据
- zookeeper应用场景-java
- 文件知识
- mfcs100d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
- 作为一个菜鸟女大学生
- Asp.net mvc 控制器
- 剑指Offer--015-链表中倒数第k个结点
- Android TypedArray详情
- MyEclipse中properties文件乱码的解决办法之安装properties插件
- 7 libjpeg使用
- RxAndroid的初体验
- 【JAVA 工具】jstack简单使用,定位死循环、线程阻塞、死锁等问题
- 极限编程-拥抱变化阅读感想(二)
- 17. Letter Combinations of a Phone Number
- linux网络栈简单总结
- 调度器(scheduler)
- Java HashMap的死循环
- 安装mongodb数据库
- fir.im Weekly - 论个人技术影响力是如何炼成的