实现:
1 #include "c2_list.h" 2 3 template <typename object> 4 class Stack{ 5 public: 6 bool isEmpty() const 7 {return _list.empty();} 8 9 const object& top() const 10 {_list.front();} 11 12 void push(const object& x) 13 {_list.push_front(x);} 14 15 object pop() 16 {object x = _list.front(); _list.pop_front(); return x;} 17 18 private: 19 List<object> _list; 20 }; 21 22 template <typename object> 23 class Queue{ 24 public: 25 bool isEmpty() const 26 {return _list.empty();} 27 28 void enqueue(const object& x) 29 {_list.push_back(x);} 30 31 object dequeue() 32 {object x = _list.front(); _list.pop_front(); return x;} 33 34 const object& getFront(object& x) 35 {return _list.front();} 36 37 private: 38 List<object> _list; 39 };
测试:
1 #include "c2_stack_queue.h" 2 #include <iostream> 3 using namespace std; 4 5 int main(){ 6 Stack<int> s; 7 Queue<int> q; 8 9 10 for(int i = 0; i < 20; i++) 11 { 12 s.push(i); 13 q.enqueue(i); 14 } 15 16 while(!s.isEmpty()) 17 { 18 cout << s.pop() << " "; 19 } 20 21 cout << endl; 22 23 while(!q.isEmpty()) 24 { 25 cout << q.dequeue() << " "; 26 } 27 28 29 return 0; 30 }