队列实验(顺序结构)
用顺序结构实现队列,要求生成的是循环队列,没有假溢出
头文件
#pragma once
const int QUEUESIZE = 10;
class Queue
{
public:
Queue() {
front = QUEUESIZE - 1;
rear = QUEUESIZE - 1;
};
~Queue() {};
void enQueue(int x);//入队
void deQueue();//出队
int getHead();//获取队头元素
bool empty();//判空
private:
int data[QUEUESIZE];//存放队列的数组
int front, rear;//游标,队头队尾指针
};
源文件
#include "Queue.h"
void Queue::enQueue(int x) {
if ((rear + 1) % QUEUESIZE == front)throw"上溢";
rear = (rear + 1) % QUEUESIZE;//队尾指针在循环意义下加一
data[rear] = x;
}
void Queue::deQueue() {
if (rear == front)throw"下溢";
front = (front + 1) % QUEUESIZE;//队头指针在循环意义下加一
}
int Queue::getHead() {
if (rear == front)throw"下溢";
return data[(front + 1) % QUEUESIZE];//队头指针在循环意义下加一
}
bool Queue::empty() {
if (rear == front)return true;
return false;
}
测试程序
#include<iostream>
using namespace std;
#include"Queue.h"
int main() {
Queue que;
cout <<"判断队列是否为空:"<< que.empty()<<endl;
//入队4个元素
que.enQueue(1);
que.enQueue(3);
que.enQueue(1);
que.enQueue(4);
cout << "取队首元素:" << que.getHead()<< endl;
//出队1个元素
que.deQueue();
cout << "再取一次队首元素:" << que.getHead() << endl;
cout << "再次判断栈是否为空:" << que.empty() << endl;
}