您的位置:首页 > 其它

环形队列中实现队列的基本运算

2016-04-01 20:29 459 查看
代码如下:

#include <iostream>
#include <stdlib.h>
#define MaxSize 10
using namespace std;

typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int front,rear;
} SqQueue;
void InitQueue(SqQueue *q)//初始化队列InitQueue
{
//q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}

void DestroyQueue(SqQueue *q)//销毁队列DestroyQueue
{
free(q);
}

bool QueueEmpty(SqQueue *q)//判断队列是否为空QueueEmpty
{
return (q->front==q->rear);
}

bool enQueue(SqQueue *q,ElemType e)//进队列enQueue
{
if(<span style="color:#ffff66;background-color: rgb(255, 0, 0);">(q->rear+1)%MaxSize == q->front</span>)
return false;
else
{
<span style="color:#ffff66;">q->rear=(q->rear+1)%MaxSize;</span>
q->data[q->rear]=e;
return true;
}
}
bool deQueue(SqQueue *q,ElemType &e)//出队列deQueue
{
if(q->front==q->rear)
return false;
else
{
<span style="background-color: rgb(255, 153, 0);">q->front=(q->front+1)%MaxSize;</span>
e=q->data[q->front];
return true;
}
}
int main()
{
SqQueue *q = new SqQueue();
char e;
InitQueue(q);
enQueue(q,'a');
cout<<QueueEmpty(q)<<endl;
deQueue(q,e);
cout<<e<<endl;
DestroyQueue(q);
cout<<QueueEmpty(q)<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: