根據上面的UML圖,很容易給出實現。
- //雙端隊列
- class Deque
- {
- public:
- void push_back(int x) { cout<<"Deque push_back"<<endl; }
- void push_front(int x) { cout<<"Deque push_front"<<endl; }
- void pop_back() { cout<<"Deque pop_back"<<endl; }
- void pop_front() { cout<<"Deque pop_front"<<endl; }
- };
- //順序容器
- class Sequence
- {
- public:
- virtual void push(int x) = 0;
- virtual void pop() = 0;
- };
- //棧
- class Stack: public Sequence
- {
- public:
- void push(int x) { deque.push_back(x); }
- void pop() { deque.pop_back(); }
- private:
- Deque deque; //雙端隊列
- };
- //隊列
- class Queue: public Sequence
- {
- public:
- void push(int x) { deque.push_back(x); }
- void pop() { deque.pop_front(); }
- private:
- Deque deque; //雙端隊列
- };
//雙端隊列
class Deque
{
public:
void push_back(int x) { cout<<"Deque push_back"<<endl; }
void push_front(int x) { cout<<"Deque push_front"<<endl; }
void pop_back() { cout<<"Deque pop_back"<<endl; }
void pop_front() { cout<<"Deque pop_front"<<endl; }
};
//順序容器
class Sequence
{
public:
virtual void push(int x) = 0;
virtual void pop() = 0;
};
//棧
class Stack: public Sequence
{
public:
void push(int x) { deque.push_back(x); }
void pop() { deque.pop_back(); }
private:
Deque deque; //雙端隊列
};
//隊列
class Queue: public Sequence
{
public:
void push(int x) { deque.push_back(x); }
void pop() { deque.pop_front(); }
private:
Deque deque; //雙端隊列
};
使用方式如下:
- int main()
- {
- Sequence *s1 = new Stack();
- Sequence *s2 = new Queue();
- s1->push(1); s1->pop();
- s2->push(1); s2->pop();
- delete s1; delete s2;
- return 0;
- }
int main()
{
Sequence *s1 = new Stack();
Sequence *s2 = new Queue();
s1->push(1); s1->pop();
s2->push(1); s2->pop();
delete s1; delete s2;
return 0;
}
本人享有博客文章的版權,轉載請標明出處 http://blog.csdn.net/wuzhekai1985