泛型队列实现文件C++

 
//	queue.cpp

template<class T>
void Queue<T> ::m_copyElement (const Queue &queue)
{
	QueueItem<T> * scan = queue.m_head ;
	while (scan != NULL)
	{
		push(scan ->m_item) ;
		scan = scan ->m_next ;
	}
}

template<class T> template<typename Iter>
void Queue<T> ::m_copyElement (Iter beg, Iter end)
{
	while (beg != end)
	{
		push(*beg) ;
		++beg ;
	}
}

template<class T>
void Queue<T> ::m_destroy (void)
{
	while (!isEmpty())
	{
		pop() ;
	}
}

template<class T> template<typename Iter>
Queue<T> ::Queue (Iter beg, Iter end): m_head(0), m_tail(0)
{
	m_copyElement(beg, end) ;
}

template<class T>
Queue<T> ::Queue (const Queue & queue): m_head(0), m_tail(0)
{
	m_copyElement(queue) ;
}

template<class T>
Queue<T> & Queue<T> ::operator = (const Queue & queue)
{
	m_destroy() ;
	m_copyElement(queue) ;

	return *this ;
}

template<class T>
Queue<T> ::~Queue (void)
{
	m_destroy() ;
}

template<class T> template<typename Iter>
void Queue<T> ::assign (Iter beg, Iter end)
{
	m_destroy() ;
	m_copyElement(beg, end) ;
}

template<class T>
bool Queue<T> ::isEmpty (void) const
{
	return NULL == m_head ;
}

template<class T>
T & Queue<T> ::front (void)
{
	return m_head ->m_item ;
}

template<class T>
const T & Queue<T> ::front (void) const
{
	return m_head ->m_item ;
}

template<class T>
void Queue<T> ::push (const T & item)
{
	QueueItem<T> * newItem = new QueueItem<T>(item) ;
	if (!isEmpty())
	{
		m_tail ->m_next = newItem ;
		m_tail = newItem ;
	}
	else
	{
		m_head = m_tail = newItem ;
	}
}

template<class T>
void Queue<T> ::pop (void)
{
	QueueItem<T> * pTemp = m_head ;
	m_head = m_head ->m_next ;

	delete pTemp ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值