1. 程式人生 > >環形佇列——使用者對使用者自定義資料型別的相關操作

環形佇列——使用者對使用者自定義資料型別的相關操作

#ifndef CUSTOMER_H
#define CUSTOMER_H
#include
using namespace std;
class Customer
{
public:
	Customer(string name="",int age=0);
	void printInfo()const;
private:
	string m_strName;
	int m_iAge;
};
#endif;#include
#include"Customer.h"
using namespace std;
Customer::Customer(string name,int age)
{
	m_strName=name;
	m_iAge=age;
}

void Customer::printInfo()const
{
	cout<<"姓名:"<
#include "MyQueue.h"
#include
using namespace std;
/**
* 建立陣列
*/
MyQueue::MyQueue(int queueCapacity)
{
	m_iQueueCapacity=queueCapacity;
	m_pQueue=new Customer[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;
	}
}

/**
* 判滿佇列
**/
bool MyQueue::QueueFull() const
{
	if(m_iQueueLen==m_iQueueCapacity)
	{
		return true;
	}
	else
	{
		return false;
	}
}

/**
* 佇列長度
**/
int MyQueue::QueueLength() const
{
	return m_iQueueLen;
}

/**
* 入隊
**/
bool MyQueue::EnQueue(Customer element)
{
	if(m_iQueueLen==m_iQueueCapacity){
		return false;
	}
	else
	{
		m_pQueue[m_iTail]=element;
		m_iTail++;
		m_iTail=m_iTail%m_iQueueCapacity;
		m_iQueueLen++;
		return true;
	}
}

/**
* 首元素出隊
**/
bool MyQueue::DeQueue(Customer &element)
{
	if(m_iQueueLen==0){
		return false;
	}
	else
	{
		element=m_pQueue[m_iHead];
		m_iHead++;
		m_iHead=m_iHead%m_iQueueCapacity;
		m_iQueueLen--;
		return true;
	}
}

/**
* 遍歷佇列
**/
void MyQueue::QueueTraverse()
{
	for(int i=m_iHead;i
#include
#include"MyQueue.h"
#include"Customer.h"
using namespace std;
int main(void)
{

	MyQueue *p=new MyQueue(4);
	Customer c1("zhangsan",20);
	Customer c2("lisi",30);
	Customer c3("wangwu",24);

	p->EnQueue(c1);
	p->EnQueue(c2);
	p->EnQueue(c3);

	p->QueueTraverse();

	Customer c4("",0);
	p->DeQueue(c4);
	c4.printInfo();

	cout<<"---------------------------"<QueueTraverse();

	/*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;
}

以上內容來源於慕課網。