#pragma once
#include<iostream>
using namespace std;
//循环队列
template<class T>
class myqueue {
/*
* 队列长度为len,只能存储len-1个元素
1.rear == front 队列为空
2.(rear + 1) % len == 0 队列满了
3.入列,先判断队列是否是满的 data[rear] = d rear = (rear + 1) % 6;
4.出列 判断队列是否为空 front = (front + 1) % len;*/
private:
T* data;
int rear;
int front;
int len;
public:
myqueue(int length=100) {
len = length;
rear = front = 0;
data = new T[len];
}
//判断是否为空
bool empty() {
if (rear == front) {
return true;
}
else {
return false;
}
}
//判断是否满了
bool full() {
if ((rear + 1) % len == 0) {
return true;
}
else {
return false;
}
}
//入列
void Push(T d) {
if (!full()) {
data[rear] = d;
rear = (rear + 1) % 6;
}
else {
cout << "队列满了" << endl;
return;
}
}
//得到队列最前面的元素
T Front() {
if (!empty()) {
return data[front];
}
else {
cout << "队列为空!" << endl;
}
}
//出列
void Pop() {
if (!empty()) {
front = (front + 1) % len;
}
else {
cout << "队列为空!" << endl;
return;
}
}
};
题目:
输入:1 2 3 4 5
输出:1 2 3 4 5
用队列来解决:
#include<iostream>
using namespace std;
//循环队列
template<class T>
class myqueue {
/*
* 队列长度为len,只能存储len-1个元素
1.rear == front 队列为空
2.(rear + 1) % len == 0 队列满了
3.入列,先判断队列是否是满的 data[rear] = d rear = (rear + 1) % 6;
4.出列 判断队列是否为空 front = (front + 1) % len;*/
private:
T* data;
int rear;
int front;
int len;
public:
myqueue(int length = 100) {
len = length;
rear = front = 0;
data = new T[len];
}
//判断是否为空
bool empty() {
if (rear == front) {
return true;
}
else {
return false;
}
}
//判断是否满了
bool full() {
if ((rear + 1) % len == 0) {
return true;
}
else {
return false;
}
}
//入列
void Push(T d) {
if (!full()) {
data[rear] = d;
rear = (rear + 1) % 6;
}
else {
cout << "队列满了" << endl;
return;
}
}
//得到队列最前面的元素
T Front() {
if (!empty()) {
return data[front];
}
else {
cout << "队列为空!" << endl;
}
}
//出列
void Pop() {
if (!empty()) {
front = (front + 1) % len;
}
else {
cout << "队列为空!" << endl;
return;
}
}
};
int main() {
int data = 0;
myqueue<int> q;
while (true) {
cin >> data;
q.Push(data);
char ch = cin.get();
if(ch == '\n') {
break;
}
}
while (!q.empty()) {
cout << q.Front() << " ";
q.Pop();
}
cout << endl;
}