#ifndef _QUEUE_H_ #define _QUEUE_H_ class CQueue{ private: int *Q; int size; int len; int head; int tail; public: CQueue(int size = 16) { this->size = size; this->Q = new int[size]; this->len = 0; this->head = 0; this->tail = 0; } ~CQueue() { delete []Q; } int is_empty() { return len == 0; } int is_full() { return len == size; } void put(int item) { Q[tail++] = item; tail = tail % size; len++; } int get(void) { len--; head = head % size; return Q[head++]; } }; #endif #ifndef _STACK_H_ #define _STACK_H_ // 属于空栈指针系列 class CStack{ private: int *s; int top; int size; public: CStack(int size = 5) { s = new int[size]; top = 0; this->size = size; } ~CStack() { delete []s; } int is_empty() { return top == 0; } int is_full() { return top == size; } void put(int item) { s[top++] = item; } int get(void) { return s[--top]; } }; #endif