codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/* * Queue Class * Written by Aaron J. Miller (20110911) */ #include <cstdio> #include <cassert> //============================================================================== // Queue Class //============================================================================== template<typename T> class CQueue { protected: struct item_s { T obj; struct item_s *next; } *m_head, *m_tail; public: inline CQueue(): m_head((item_s *)0), m_tail((item_s *)0) { } inline ~CQueue() { while(!IsEmpty()) Pop(); } inline bool IsEmpty() { return m_head!=(item_s *)0?false:true; } inline void Push(const T &obj) { item_s *p; p = new item_s(); p->obj = obj; p->next = (struct item_s *)0; if (m_tail) m_tail->next = p; else m_head = p; m_tail = p; } inline T Pop() { item_s *next; T obj; assert(!IsEmpty()); next = m_head->next; obj = m_head->obj; delete m_head; if (!(m_head = next)) m_tail = (item_s *)0; return obj; } }; //============================================================================== // Test Code //============================================================================== int main() { CQueue<int> int_queue; int_queue.Push(42); int_queue.Push(23); int_queue.Push(17); int_queue.Push(47); int_queue.Push(1); int_queue.Push(2); int_queue.Push(3); while(!int_queue.IsEmpty()) printf("%d\n", int_queue.Pop()); return 0; }
Private
[
?
]
Run code
Submit