   ҥuOe myque2.h P myque2.cpp AXg template class
  `NHU Line 4, Line 25, line 26, Line 32, Line 33

tsaiwn@magpie % cat -n myque3.h
     1  // myque3.h  -- template queue class by tsaiwn@csie.nctu.edu.tw
     2  #ifndef __MYQUE3__
     3  #define __MYQUE3__
     4  template <class HAHA>
     5  class MyQueue {
     6      enum{ NELEMENT=99 };  // good habit
     7      HAHA data[NELEMENT];
     8      int phead, ptail;   // phead V queue eY, ptailV
     9      void initQueue(void){ phead = ptail = 0; }
    10    public:
    11      MyQueue(void) { initQueue( ); }
    12      void enque(HAHA);
    13      HAHA deque(void);
    14      HAHA front(void) { return data[phead]; }
    15      int isempty(void) { return (phead == ptail) ;}
    16      int isfull(void) { return ((ptail+1) % NELEMENT) == phead; } 
    17      ////// //////  `N circular queue F覡
    18      void push(HAHA x) { enque(x); }
    19      HAHA pop(void) { return deque( ); }
    20      HAHA top(void) { return front( ); }
    21      int empty(void) { return isempty( );}
    22      int full(void) { return isfull( );}
    23  }; // class MyQueue
    24  ////// ////// //////
    25  template <class HAHA>
    26  void MyQueue<HAHA>::enque(HAHA x) {
    27      if( isfull() ) { return; }  // may want to give some error message?
    28      data[ptail] = x;
    29      ptail++;
    30      ptail %=  NELEMENT;    /* x %= y;  means x = x % y; */
    31  }
    32  template <class HAHA>
    33  HAHA MyQueue<HAHA>::deque(void) {  
    34     if( !isempty() ) {
    35        HAHA tmp=data[phead];
    36        phead++; phead %= NELEMENT;
    37        return tmp;
    38     } // if !isempty
    39  }
    40  #endif
tsaiwn@magpie % cat -n testmyq3.cpp
     1  //testmyq3.cpp -- using template class MyQueue in myque3.h
     2  // CopyLeft by tsaiwn@csie.nctu.edu.tw
     3  #include "myque3.h"
     4  // HU #ifndef OΨ check O_ GNU  g++ ?
     5  // YOhϥ¦gk! Ҧp Turbo C++ 3.0 u{¦gk!
     6  #ifndef __GNUG__
     7    #include <iostream.h>
     8  #else
     9    #include<iostream>
    10    using namespace std;
    11  #endif
    12  ////// ////// ////// ////// ////// //////
    13  int main( ) {
    14      MyQueue<long> xo;
    15      xo.enque(53);
    16      xo.push(770);
    17      xo.push(880);
    18      while(!xo.empty( ) ) {
    19         cout << xo.top( ) << " "; xo.pop( );
    20      }
    21      cout << endl;   // new line
    22      return 0;
    23  }
tsaiwn@magpie % g++ testmyq3.cpp
tsaiwn@magpie % ./a.out
53 770 880

tsaiwn@magpie % echo p624
