环形队列——对int类型的数据进行操作

#ifndef MYQUEUE_H
#define MYQUEUQ_H
class MyQueue
{
public:
	MyQueue(int queueCapacity);   //InitQueue(&Q)  创建队列
	virtual ~MyQueue();           //DestroyQueue(&Q) 销毁队列
	void CleanQueue();            //CleanQueue(&Q)清空队列
	bool QueueEmpty() const;      //QueueEmpty(Q) 判空队列
	bool QueueFull() const;       //QueueFull()判满队列
	int QueueLength() const;      //QueueLength(Q)队列长度
	bool EnQueue(int element);    //EnQueue(&Q element)  新元素入队
	bool DeQueue(int &element);   //DeQueue(&Q &element) 首元素出队
	void QueueTraverse();         //QueueTraverse(Q visit()) 遍历队列
private:
	int *m_pQueue;                //队列数组指针
	int m_iQueueLen;              //队列元素个数
	int m_iQueueCapacity;         //队列数组容量
	int m_iHead;                  //队头
	int m_iTail;                   //队尾
};
#endif// MYQUEUE_H#include
  
  
   
   
#include
   
   
    
    
#include "MyQueue.h"
using namespace std;

MyQueue::MyQueue(int queueCapacity)
{
	m_iQueueCapacity=queueCapacity;
	m_pQueue=new int[m_iQueueCapacity];
	CleanQueue();
}

MyQueue::~MyQueue()
{
	delete[] m_pQueue;
	m_pQueue =NULL;
}

void MyQueue::CleanQueue()
{
	m_iHead=0;
	m_iTail=0;
	m_iQueueLen=0;
}

bool MyQueue::QueueEmpty() const
{
	if(m_iQueueLen==0)
	{
		return true;
	}
	else
	{
		return false;
	}
	/*return m_iQueueLen == 0 ? true : false;*/
}

int MyQueue::QueueLength() const
{
	return m_iQueueLen;
}

bool MyQueue::QueueFull() const
{
	if(m_iQueueLen==m_iQueueCapacity)
	{
		return true;
	}
	else
	{
		return false;
	}
}

bool MyQueue::EnQueue(int element)
{
	if(QueueFull())
	{
		return false;
	}else
	{
		m_pQueue[m_iTail]=element;
		m_iTail++;
		m_iTail=m_iTail%m_iQueueCapacity;
		m_iQueueLen++;
		return true;
	}
}

bool MyQueue::DeQueue(int &element)
{
	if(QueueEmpty())
	{
		return false;
	}
	else
	{
		element=m_pQueue[m_iHead];
		m_iHead++;
		m_iHead=m_iHead%m_iQueueCapacity;
		m_iQueueLen--;
		return true;
	}
}
void MyQueue::QueueTraverse()
{
	cout<
    
    
     
     
#include
     
     
      
      
#include"MyQueue.h"
using namespace std;
int main(void)
{
	MyQueue *p=new MyQueue(4);
	p->EnQueue(10);
	p->EnQueue(12);
	p->EnQueue(16);
	p->EnQueue(18);
	p->QueueTraverse();

	int e=0;
	p->DeQueue(e);
	cout<
      
      
        DeQueue(e); cout< 
       
         QueueTraverse(); p->CleanQueue(); p->QueueTraverse(); p->EnQueue(20); p->EnQueue(30); p->QueueTraverse(); delete p; p=NULL; system("pause"); return 0; } 
        
      
     
     
    
    
   
   
  
  

以上内容来源于慕课网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值