队列的初始化、入队列、出队列、判断队列是否为空、求队列长度和输出显示队列元素C++代码
时间: 2023-12-24 16:24:45 浏览: 93
数据结构与算法C++实现 循环顺序队列的初始化,求长度,入队,出队
5星 · 资源好评率100%
以下是关于循环队列的基本操作的C++代码实现:
初始化:
```c++
#define MAXQSIZE 100 //队列最大长度
typedef int QElemType; //队列元素类型
typedef struct {
QElemType *base; //队列存储空间基址
int front; //队头指针
int rear; //队尾指针
} SqQueue;
Status InitQueue(SqQueue &Q) {
Q.base = new QElemType[MAXQSIZE];
if (!Q.base) exit(OVERFLOW); //存储分配失败
Q.front = Q.rear = 0; //队头、队尾指针置为0
return OK;
}
```
入队:
```c++
Status EnQueue(SqQueue &Q, QElemType e) {
if ((Q.rear + 1) % MAXQSIZE == Q.front) return ERROR; //队列已满
Q.base[Q.rear] = e; //新元素插入队尾
Q.rear = (Q.rear + 1) % MAXQSIZE; //队尾指针后移
return OK;
}
```
出队:
```c++
Status DeQueue(SqQueue &Q, QElemType &e) {
if (Q.front == Q.rear) return ERROR; //队列为空
e = Q.base[Q.front]; //队头元素出队
Q.front = (Q.front + 1) % MAXQSIZE; //队头指针后移
return OK;
}
```
判断队列是否为空:
```c++
Status QueueEmpty(SqQueue Q) {
if (Q.front == Q.rear) return TRUE; //队列为空
else return FALSE; //队列非空
}
```
求队列长度:
```c++
int QueueLength(SqQueue Q) {
return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;
}
```
输出显示队列元素:
```c++
Status QueueTraverse(SqQueue Q) {
cout << "当前队列为:";
if (Q.front == Q.rear) return ERROR; //队列为空
while (Q.front != Q.rear) //队列非空
{
cout << Q.base[Q.front] << " "; //输出队头元素
Q.front = (Q.front + 1) % MAXQSIZE; //队头指针后移
}
cout << endl;
return OK;
}
```
阅读全文