【数据结构与算法】顺序队列实现

为了让初学者更好地了解队列,这里写出了顺序队列的实现模板,如果想看链式队列的实现,请查看本专栏下一篇文章,希望对大家有帮助

#pragma once
#define MAX_SIZE 100
template<typename T>
class SequenceQueue {
public:
	SequenceQueue();
	SequenceQueue(T tValue);
private:
	typedef struct {
		T data[MAX_SIZE];
		int front;
		int tail;
	}SqQueue;
	SqQueue m_Queue;
public:
	bool push(T tValue);
	bool pop(T* result);
	bool clear();
};

template<typename T>
inline SequenceQueue<T>::SequenceQueue()
{
	m_Queue.front = 0;
	m_Queue.tail = 0;
}

template<typename T>
inline SequenceQueue<T>::SequenceQueue(T tValue)
{
	m_Queue.data[m_Queue.tail] = tValue;
	m_Queue.tail++;
}

template<typename T>
inline bool SequenceQueue<T>::push(T tValue)
{
	if ((m_Queue.tail + 1) % MAX_SIZE == m_Queue.front) {
		return false;
	}
	else {
		m_Queue.data[m_Queue.tail] = tValue;
		m_Queue.tail = (m_Queue.tail + 1) % MAX_SIZE;
		return true;
	}
}

template<typename T>
inline bool SequenceQueue<T>::pop(T * result)
{
	if (m_Queue.front == m_Queue.tail) {
		return false;
	}
	else {
		*result = m_Queue.data[m_Queue.front];
		m_Queue.front = (m_Queue.front + 1) % MAX_SIZE;
		return true;
	}
	return true;
}

template<typename T>
inline bool SequenceQueue<T>::clear()
{
	m_Queue.front = m_Queue.tail = 0;
	return true;
}

如果发现文章中有错误,还请大家指出来,我会非常虚心地学习,我们一起进步!!!

你可能感兴趣的:(数据结构与算法,算法,c++)