  HUҤlDnbpbº C y@X@ӦC(Queue, ƶ),
ܩ Queue wqHΥγ~аѦҭpҥάOƵcҥ,
Ϊ̥ google.com @Ӥ]iݨ\hһP!

tsaiwn@magpie % cat -n que.c
     1  // que.c -- use C to inplement Queue as a circular queue
     2  // @CopyLeft by tsaiwn@csie.nctu.edu.tw
     3  // Yn queue O? ==>  C++  class 
     4  enum{ NELEMENT=99 };  // good habit
     5  static long data[NELEMENT];
     6  static int phead=0, ptail=0;   // phead V queue eY, ptailV
     7  initQueue(void){ phead = ptail = 0; }
     8  void enque(long);
     9  long deque(void);
    10  long front(void) { return data[phead]; }
    11  int isempty(void) { return (phead == ptail) ;}
    12  int isfull(void) { return ((ptail+1) % NELEMENT) == phead; } //d@Ӥ!
    13  ////// //////
    14   void push(long x) { enque(x); }
    15   long pop(void) { return deque( ); }
    16   long top(void) { return front( ); }
    17   int empty(void) { return isempty( );}
    18   int full(void) { return isfull( );}
    19  /////// /////// /////// /////// /////// /////// 
    20  void enque(long x) {
    21      if( isfull() ) { return; }  // may want to give some error message?
    22      data[ptail] = x;
    23      ptail++;
    24      ptail %=  NELEMENT;    /* x %= y;  means x = x % y; */
    25  }
    26  long deque(void) {  
    27     if( !isempty() ) {
    28        long tmp=data[phead];
    29        phead++; phead %= NELEMENT;
    30        return tmp;
    31     } // if !isempty
    32  }
tsaiwn@magpie % gcc -c que.c        <=== nDunͥXXɮ que.o
tsaiwn@magpie % nm que.o          <=== nDCX que.o  symbols
0000018c C data
000000f4 T deque
0000009e T empty
000000b2 T enque
00000019 T front
000000a8 T full
00000000 T initQueue
0000002a T isempty
00000040 T isfull
00000000 D phead
00000087 T pop
00000004 D ptail
00000071 T push
00000094 T top
tsaiwn@magpie % cat -n tstque.c
     1  /// tstque.c -- example to use the circular Queue written in C language
     2  // by Wen-Nung Tsai, tsaiwn@csie.nctu.edu.tw
     3  // gcc -c que.c
     4  // gcc tstque.c que.o ; ./a.out
     5  /**********************************/
     6  #include <stdio.h>
     7  int main( ) {
     8     printf("Test queue written in C Language.\n");
     9     enque(53);
    10     enque(770);
    11     enque(880);
    12     while( !isempty( ) ) {
    13        printf("%ld ", deque( ) );
    14     }
    15     printf("\n===bye\n");
    16     return 0;
    17  }
tsaiwn@magpie % gcc tstque.c que.o
tsaiwn@magpie % ./a.out
Test queue written in C Language.
53 770 880
===bye
tsaiwn@magpie % echo p621
