среда, 5 июня 2013 г.

QUEUE (Реализация упрощенной очереди через список)


#include <iostream>
using namespace std;

template<typename T>
class MyQueue
{
public:
MyQueue();

void put(T item);
T get();
bool empty();
private:
struct Node
{
T m_item;
Node *m_next;
Node(T item);
};
Node *m_head;
Node *m_tail;
};

template<typename T>
MyQueue<T>::Node::Node(T item)
{
m_item = item;
m_next = 0;
}

template<typename T>
MyQueue<T>::MyQueue()
{
m_head = 0;
m_tail = 0;
}

template<typename T>
void MyQueue<T>::put(T item)
{
Node *tmp = m_tail;
m_tail = new Node(item);
(0 == m_head) ? m_head = m_tail : tmp->m_next = m_tail;
}

template<typename T>
T MyQueue<T>::get()
{
T tmpItem = m_head->m_item;
Node *tmp = m_head->m_next;

delete m_head;
m_head = tmp;

return tmpItem;
}