環形佇列——使用者對使用者自定義資料型別的相關操作
阿新 • • 發佈:2018-12-27
#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; }
以上內容來源於慕課網。