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; } 当存入的数据不是int,而是其他复杂数据类型时 以上是内存溢出为你收集整理的数据结构探险(一)——栈全部内容,希望文章能够帮你解决数据结构探险(一)——栈所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)