数组模拟实现。模板不熟,改为模板更好一些。
class stack {
private:
int maxsize, t;
int *s;
public:
stack(int n) : maxsize(n), t(0){
s = new int[maxsize];
}
virtual ~stack(){
delete []s;
}
void push(int v){
s[t++] = v;
}
int pop(){
int v = s[--t];
return v;
}
int top(){
return s[t-1];
}
bool empty(){
return t == 0;
}
int size(){
return t;
}
};
class queue {
private:
int maxsize, f, r;
int *q;
public:
queue(int n) : maxsize(n), f(0), r(0){
q = new int[maxsize];
}
virtual ~queue(){
delete []q;
}
void enqueue(int v){
q[r++] = v;
r %= maxsize;
}
int dequeue(){
int v = q[f++];
f %= maxsize;
return v;
}
int front(){
return q[f];
}
bool empty(){
return f == r;
}
int size(){
return f == (r + 1) % maxsize;
}
};