数据结构 请描述顺序队列的基本运算
时间: 2024-01-09 10:20:26 浏览: 39
顺序队列是一种基于数组实现的队列,它的基本运算包括以下几个:
1.初始化队列:创建一个空队列,即分配一个数组空间,设置队头和队尾指针为0。
2.判断队列是否为空:当队头和队尾指针相等时,队列为空。
3.判断队列是否已满:当队尾指针指向数组的最后一个位置时,队列已满。
4.入队操作:将元素插入队尾,即将元素存储到队尾指针所指向的位置,然后将队尾指针加1。
5.出队操作:将队头元素删除并返回,即将队头指针所指向的元素取出,然后将队头指针加1。
6.获取队头元素:返回队头指针所指向的元素,但不删除该元素。
7.获取队列长度:返回队列中元素的个数,即队尾指针减去队头指针。
下面是一个示例代码,实现了顺序队列的基本运算:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义队列的最大长度
typedef struct {
char data[MAXSIZE]; // 存储队列元素
int front, rear; // 队头和队尾指针
} SqQueue;
// 初始化队列
void InitQueue(SqQueue &Q) {
Q.front = Q.rear = 0;
}
// 判断队列是否为空
bool IsEmpty(SqQueue Q) {
return Q.front == Q.rear;
}
// 判断队列是否已满
bool IsFull(SqQueue Q) {
return Q.rear == MAXSIZE;
}
// 入队操作
bool EnQueue(SqQueue &Q, char x) {
if (IsFull(Q)) {
return false;
}
Q.data[Q.rear++] = x;
return true;
}
// 出队操作
bool DeQueue(SqQueue &Q, char &x) {
if (IsEmpty(Q)) {
return false;
}
x = Q.data[Q.front++];
return true;
}
// 获取队头元素
bool GetHead(SqQueue Q, char &x) {
if (IsEmpty(Q)) {
return false;
}
x = Q.data[Q.front];
return true;
}
// 获取队列长度
int GetLength(SqQueue Q) {
return Q.rear - Q.front;
}
int main() {
SqQueue Q;
InitQueue(Q);
char x;
EnQueue(Q, 'a');
EnQueue(Q, 'b');
EnQueue