其實, C++ Class library 已經有 stack 和 queue, 且為 template (樣板); 但其函數名稱與用法與一般資料結構課本上講的稍有不同; 例如, 一般pop不是void function. 又如, 一般queue的加入刪除為 enque (或 addqueue) 與 deque. 以下用程式庫中 queue 擴充成 myqueue, 其實只換了幾個函數名稱 :-) ccsun2 queSample> g++ que9.cpp ccsun2 queSample> ./a.out Size of the queue = 8 5 3 7 7 0 8 8 0 ccsun2 queSample> ccsun2 queSample> cat -n que9.cpp 1 //que9.cpp --- CopyLeft by tsaiwn@csie.nctu.edu.tw 2 #include 3 #include 4 // see /usr/local/include/g++/queue 5 using namespace std; 6 template 7 class myqueue: public queue{ 8 public: 9 void enqueue(T x){ queue::push(x); } 10 void dequeue(void){ queue::pop(); } 11 T head(void){ return queue::front(); } 12 bool isempty() { return queue::empty(); } 13 // size_t size() { return queue::size(); } 14 }; 15 int main( ) 16 { 17 myqueue x; 18 x.enqueue(53); 19 x.enqueue(0x33); 20 x.enqueue('7'); 21 x.enqueue(55); 22 x.enqueue(48); 23 x.push(56); 24 x.push(56); 25 x.enqueue(48); 26 cout << "Size of the queue = " << x.size() << endl; 27 while(! x.isempty()) 28 { 29 cout << x.head() << " "; 30 x.dequeue(); 31 } 32 std::cout << endl; 33 } ccsun2 queSample> g++ que9.cpp ccsun2 queSample> ./a.out Size of the queue = 8 5 3 7 7 0 8 8 0 ccsun2 queSample> exit exit