#include <iostream>
using namespace std;
//
class CDeque
{
public:
void push_front() { cout<<"CDeque push_front."<<endl; }
void push_back() { cout<<"CDeque push_back."<<endl; }
void pop_front() { cout<<"CDeque pop_front."<<endl; }
void pop_back() { cout<<"CDeque pop_back."<<endl; }
};
struct ISequence
{
public:
virtual void push() = 0;
virtual void pop() = 0;
};
class CStack : public ISequence,CDeque
{
public:
virtual void push() { push_back(); }
virtual void pop() { pop_back(); }
};
class CQueue : public ISequence,CDeque
{
public:
virtual void push() { push_back(); }
virtual void pop() { pop_front(); }
};
//
void main()
{
CStack stack;
stack.push();
stack.pop();
CQueue queue;
queue.push();
queue.pop();
}