队列的基本操作c++构造队列
时间: 2023-12-11 19:29:42 浏览: 94
队列是一种先进先出(FIFO)的数据结构,它的基本操作包括入队、出队、获取队头元素、获取队列长度等。下面是C++构造队列的基本操作:
1.定义队列结构体
typedef struct {
qelemtype* base; //队列数组指针
int front; //队头指针
int rear; //队尾指针
} SqQueue;
2.初始化队列
void InitQueue(SqQueue& Q) {
Q.base = new qelemtype[MAXSIZE]; //动态分配数组空间
Q.front = Q.rear = 0; //队头队尾指针初始化为0
}
3.判断队列是否为空
bool IsEmpty(SqQueue Q) {
if (Q.front == Q.rear) {
return true;
}
else {
return false;
}
}
4.判断队列是否已满
bool IsFull(SqQueue Q) {
if ((Q.rear + 1) % MAXSIZE == Q.front) {
return true;
}
else {
return false;
}
}
5.入队操作
bool EnQueue(SqQueue& Q, qelemtype e) {
if (IsFull(Q)) {
return false;
}
Q.base[Q.rear] = e; //将元素e插入队尾
Q.rear = (Q.rear + 1) % MAXSIZE; //队尾指针后移一位
return true;
}
6.出队操作
bool DeQueue(SqQueue& Q, qelemtype& e) {
if (IsEmpty(Q)) {
return false;
}
e = Q.base[Q.front]; //将队头元素赋值给e
Q.front = (Q.front + 1) % MAXSIZE; //队头指针后移一位
return true;
}
7.获取队头元素
bool GetHead(SqQueue Q, qelemtype& e) {
if (IsEmpty(Q)) {
return false;
}
e = Q.base[Q.front]; //将队头元素赋值给e
return true;
}
8.获取队列长度
int GetLength(SqQueue Q) {
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
阅读全文