数据结构 之 循环队列

  • Post author:
  • Post category:其他


队列符合先进先出的原则,循环队列可以持续地往队列里增加元素、减少元素。

以下为例。

MyQueue.h

#ifndef MYQUEUE_H
#define MYQUEUE_H

#include"Customer.h"
#include"MyQueue.h"
#include<iostream>
using namespace std;

template <typename T>//用类模板

class MyQueue
{
public:
	MyQueue(int QueueCapacity);
	virtual ~MyQueue();
	void ClearQueue();
	bool QueueEmpty()const;
	bool QueueFull()const;
	int QueueLength()const;
	bool EnQueue(T element);
	bool DeQueue(T &element);
	void QueueTraverse();
private:
	T * m_pQueue;//队列里的每个元素都是一个类的对象
	int m_iQueueLen;
	int m_iQueueCapacity;
	int m_iHead,m_iTail;//队头队尾的脚标
};


template <typename T>    
MyQueue<T>::MyQueue(int QueueCapacity)
{
	m_iQueueCapacity = QueueCapacity;
	m_pQueue = new T[m_iQueueCapacity];
	ClearQueue();//直接调用
	cout << "MyQueue(int QueueCapacity)" << endl;
}

template <typename T>
MyQueue<T>::~MyQueue()
{
	delete []m_pQueue;
	m_pQueue = NULL;
	cout << "~MyQueue()" << endl;
}

template <typename T>
void MyQueue<T>::ClearQueue()
{
	m_iQueueLen = 0;
	m_iHead = m_iTail = 0;
}

template <typename T>
bool MyQueue<T>::QueueEmpty()const
{
	if(m_iQueueLen == 0){
		return true;
	}else{
		return false;
	}
	//return m_iQueueLen == 0?true:fa



版权声明:本文为zealice原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。