// que.c -- use C to inplement Queue as a circular queue enum{ NELEMENT=99 }; // good habit static long data[NELEMENT]; static int phead=0, ptail=0; // phead 指向 queue 的前頭, ptail指向尾巴 initQueue(void){ phead = ptail = 0; } void enque(long); long deque(void); long front(void) { return data[phead]; } int isempty(void) { return (phead == ptail) ;} int isfull(void) { return ((ptail+1) % NELEMENT) == phead; } //留一個不用! ////// ////// void push(long x) { enque(x); } long pop(void) { return deque( ); } long top(void) { return front( ); } int empty(void) { return isempty( );} int full(void) { return isfull( );} /////// /////// /////// /////// /////// /////// void enque(long x) { if( isfull() ) { return; } // may want to give some error message? data[ptail] = x; ptail++; ptail %= NELEMENT; /* x %= y; means x = x % y; */ } long deque(void) { if( !isempty() ) { long tmp=data[phead]; phead++; phead %= NELEMENT; return tmp; } // if !isempty }