加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数据结构探险(一)——栈

发布时间:2020-12-15 04:47:37 所属栏目:百科 来源:网络整理
导读:FIFO 普通队列 循环队列 c++实现循环队列 #ifndef MYQUEUE_H #define MYQUEUE_H /****************************************/ /*环形队列C++实现*/ /****************************************/ class MyQueue { public: MyQueue(int queueCapacity); //Init

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,而是其他复杂数据类型时

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读