標籤:
實現:
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() const10 {_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() const26 {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 }
Stack和Queue的實現