数据结构探险(一)——栈
FIFO 普通队列 循环队列 c++实现循环队列#ifndef MYQUEUE_H #define MYQUEUE_H /****************************************/ /*环形队列C++实现*/ /****************************************/ class MyQueue { public: MyQueue(int queueCapacity); //InitQueue(&Q) virtual ~MyQueue(); //DestroyQueue(&Q) void ClearQueue(); //ClearQueue(&Q) bool QueueEmpty() const; //QueueEmpty(Q) bool QueueFull() const; int QueueLength() const; //QueueLength(Q) bool EnQueue(int element); //EnQueue(&Q,element) bool DeQueue(int &element); //DeQueue(&Q,&element) void QueueTraverse(); //QueueTraverse(Q,visit())B private: int *m_pQueue;//队列数组指针 int m_iQueueLen;//队列元素个数 int m_iQueueCapacity;//队列数组容量 int m_iHead; int m_iTail; }; #endif #include #include #include"MyQueue.h" #include using namespace std; MyQueue::MyQueue(int queueCapacity) { m_iQueueCapacity =queueCapacity; m_pQueue = new int[m_iQueueCapacity]; ClearQueue(); } MyQueue::~MyQueue() { delete []m_pQueue; m_pQueue=NULL; } void MyQueue::ClearQueue() { 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_iQueueCapacity==m_iQueueLen) 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)//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() { for(int i=m_iHead;i { cout< } } #include #include #include"MyQueue.h" #include"MyQueue.cpp" /****************************/ /* 实现环形队列 */ /****************************/ using namespace std; int main(void) { MyQueue *p =new MyQueue(4); p->EnQueue(10); p->EnQueue(12); p->EnQueue(16); p->EnQueue(18); p->EnQueue(20); p->QueueTraverse(); int e=0; p->DeQueue(e); cout< cout< delete p; p=NULL; system("pause"); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |