Advertisement
Guest User

queue

a guest
Sep 22nd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. template <typename A> class my_queue {
  2. private:
  3.     A *q;
  4.     int l, r;
  5.     int q_size;
  6. public:
  7.     my_queue(int n) {
  8.         q = new A[2 * n];
  9.         l = r = 0;
  10.         q_size = 2 * n;
  11.     }
  12.     my_queue() {
  13.         q = new A[maxn];
  14.         l = r = 0;
  15.         q_size = maxn;
  16.     }
  17.     ~my_queue() {
  18.         delete[] q;
  19.     }
  20.     void push(A x) {
  21.         if (r == q_size) {
  22.             A *new_q = new A[2 * q_size];
  23.             for (int i = 0; i < q_size; ++i)
  24.                 new_q[i] = q[i];
  25.             delete[] q;
  26.             q = new_q;
  27.             q_size *= 2;
  28.         }
  29.         q[r++] = x;
  30.     }
  31.     A front() {
  32.         return q[l];
  33.     }
  34.     void pop() {
  35.         l++;
  36.         if (l == r)
  37.             l = r = 0;
  38.     }
  39.     bool empty()
  40.     {
  41.         return l == r;
  42.     }
  43.     int size() {
  44.         return r - l;
  45.     }
  46.     void clear()
  47.     {
  48.         l = r = 0;
  49.     }
  50.     friend ostream &operator << (ostream &out, const my_queue<A> &q);
  51. };
  52.  
  53. template <typename A>
  54. ostream &operator << (ostream &out, const my_queue<A> &q){
  55.     for (int i = q.l; i < q.r; i++)
  56.         out << q.q[i] << " ";
  57.     return out;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement