#include <iostream>
#include <string>
using namespace std;
typedef int EType; // 自定义链表的数据元素为整数。
//定义队列顺序存储结构
struct Queue
{
EType *element; // 存放结点的数据元素。
int front; //对头节点
int real; //队尾节点
int maxsize; //队列最大容量
};
//构造空队列算法
void CreatQueue(Queue& Q, int MaxQueueSize) {
Q.maxsize = MaxQueueSize;
Q.element = new EType[Q.maxsize];
Q.front = 0;
Q.real = 0;
}
//判断队列是否为空
bool IsEmpty(Queue& Q) {
if (Q.front == Q.real) return true;
return false;
}
//判断队列是否满了front=real+1;
bool IsFull(Queue& Q) {
if (Q.front == (Q.real+1)%(Q.maxsize+1)) return true;
return false;
}
//返回队头元素的值
bool GetFront(Queue& Q, EType& result) {
//将font后面一个位置的队列元素的值取出
if (IsEmpty(Q)) return false;
result = Q.element[(Q.front + 1) % (Q.maxsize + 1)];
return true;
}
//进队运算
//将一个新的的元素x存储到当前real所指空间的下一个位置,首先要判断队列是否为满了
bool EnQueue(Queue &Q,EType &x) {
if (IsFull(Q)) return false;
Q.real = (Q.real + 1) % (Q.maxsize + 1); //real指向空间的下一个位置
Q.element[Q.real] = x;//存入x
return true;
}
//出队运算
//将front所指空间的下一个位置的元素取出,首先要判断队列是否为空
bool OutQueue(Queue& Q, EType& result) {
if (IsEmpty(Q)) return false;
Q.front = (Q.front + 1) % (Q.maxsize + 1); //front指向空间的下一个位置
result = Q.element[Q.front];
return true;
}
深入理解数据结构——队列顺序存储
最新推荐文章于 2024-07-22 01:54:50 发布