队列

来源:互联网 发布:温州公安网络 编辑:程序博客网 时间:2024/06/06 01:15

数组实现:


#include <iostream>using namespace std;typedef int T;class Queue{T a[5];int b, n;//队首位置和有效元素个数public:Queue():b(0),n(0){}Queue& push(const T& d){if(full()) throw "满";a[(b+n++)%5] = d;return *this;}T pop(){if(empty()) throw "空";--n;return a[b++%5];}const T& front()const{return a[b%5];}const T& back()const{return a[(b+n-1)%5];}int size()const{return n;}void clear(){b=0, n=0;}bool empty()const{return n==0;}bool full()const{return n==5;}};int main(){Queue q;try{q.push(1).push(2).push(3);q.push(4).push(5);cout << q.pop() << endl;cout << q.pop() << endl;q.push(6).push(7).push(8);}catch(const char* e){cout << "异常:" << e << endl;}while(!q.empty())cout << q.pop() << endl;}



链表实现:

#include <iostream>using namespace std;typedef int T;#include "01list.h"class Queue{List l;public:Queue& push(const T& d){l.push_back(d);return *this;}T pop(){T t=front();l.erase(0);return t;}const T& front()const{return l.front();}const T& back()const{return l.back();}int size()const{return l.size();}void clear(){l.clear();}bool empty()const{return l.empty();}bool full()const{return false;}};int main(){Queue q;q.push(1).push(2).push(3);q.push(4).push(5);cout << q.pop() << endl;cout << q.pop() << endl;q.push(6).push(7).push(8);while(!q.empty())cout << q.pop() << endl;}



0 0
原创粉丝点击