版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenyuk1/article/details/83478407
#include <iostream>
#include <algorithm>
using namespace std;
typedef int Status;
#define QueueElemType int
#define MAX_QUEUE_SIZE 10
#define QUEUE_INCREMNET 5
typedef struct { //循环队列
QueueElemType *base;
int front; //队头
int rear; //队尾
}SqQueue;
Status InitQueue(SqQueue &Q) {
Q.base = (QueueElemType*) new QueueElemType[MAX_QUEUE_SIZE];
if (Q.base == NULL) {
cout << "初始化成功\n";
return 0;
}
Q.front = Q.rear = 0;
return 1;
}
Status QueueEmpty(SqQueue &Q) {
if (Q.front == Q.rear)
return 1;
else
return 0;
}
int QueueLength(SqQueue &Q) {
return (Q.rear - Q.front + MAX_QUEUE_SIZE) % MAX_QUEUE_SIZE;
}
Status EnQueue(SqQueue &Q, QueueElemType &e) {
if ((Q.rear + 1) % MAX_QUEUE_SIZE == Q.front) {
cout << "队列满\n";
return 0;
}
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAX_QUEUE_SIZE;
return 1;
}
Status GetHead(SqQueue &Q, QueueElemType &e) {
if (Q.front == Q.rear) {
cout << "队列空\n";
return 0;
}
e = Q.base[Q.front];
return 1;
}
Status DeQueue(SqQueue &Q, QueueElemType &e) {
if (Q.front == Q.rear) {
cout << "队列为空";
return 0;
}
e = Q.base[Q.front];
Q.front = (Q.front + 1) % MAX_QUEUE_SIZE;
return 1;
}
Status DestroyQueue(SqQueue &Q) {
delete[]Q.base;
return 1;
}
int queuemain() {
SqQueue qu;
InitQueue(qu);
if (QueueEmpty(qu))
cout << "kong\n";
for (int i = 0; i != 7; i++) {
int tmp=i;
EnQueue(qu, tmp);
}
for (int i = 0; i != 2; i++) {
int tmp;
DeQueue(qu, tmp);
cout << tmp << "______";
cout << endl;
}
for (int i = 0; i != 7; i++) {
int tmp = i;
EnQueue(qu, tmp);
}
cout << QueueLength(qu) << endl;
for (int i = 0; i != 10; i++) {
int tmp;
DeQueue(qu, tmp);
cout << tmp << ' ';
}
cout << endl;
return 1;
}