/* * push_pop_list.cpp * * Created on: 28.11.2013 * Author: trifon */ #include "lqueue.cpp" #include "lstack.cpp" #include "linked_list.cpp" template <typename T> class PushPop { public: virtual bool push(T const& x) = 0; virtual bool pop(T& x) = 0; }; template <typename T> class PushPopQueue : public PushPop<T>, public LQueue<T> { public: bool push(T const& x) { return LQueue<T>::push(x); } bool pop(T& x) { return LQueue<T>::pop(x); } }; template <typename T> class PushPopStack : public PushPop<T>, public LStack<T> { public: bool push(T const& x) { return LStack<T>::push(x); } bool pop(T& x) { return LStack<T>::pop(x); } }; typedef LinkedList<PushPop<int>* > PushPopIntList;