题目要求
请实现一个MyQueue类,实现出队,入队,求队列长度.
实现入队函数 void push(int x);
实现出队函数 int pop();
实现求队列长度函数 int size();
输入格式:
每个输入包含1个测试用例。每个测试用例第一行给出一个正整数 n (n <= 10^6) ,接下去n行每行一个数字,表示一种操作:
1 x : 表示从队尾插入x,0<=x<=2^31-1。
2 : 表示队首元素出队。
3 : 表示求队列长度。
输出格式:
对于操作2,若队列为空,则输出 “Invalid”,否则请输出队首元素。 对于操作3,请输出队列长度。
每个输出项最后换行。
输入样例:
5
3
2
1 100
3
2
输出样例:
0
Invalid
1
100
代码
#include<iostream>
#include<cstring>
using namespace std;
class MyQueue // 定义 MyQueue 类
{
private:
int val[1000]; // 队列的数组,用于存储元素
int front = 0; // 队列的头指针,指向队列的第一个元素的位置
public:
// 向队列中插入元素
void push(int x);
// 从队列中删除元素
int pop();
// 返回队列的大小
int size();
// MyQueue 类的构造函数
MyQueue();
};
// MyQueue 类的构造函数
MyQueue::MyQueue()
{
// 初始化队列
}
// 向队列中插入元素
void MyQueue::push(int x)
{
val[front++] = x; // 将元素插入到队列尾部,并更新 front 指针
}
// 返回队列的大小
int MyQueue::size()
{
return front; // 返回队列的大小,即 front 指针的值
}
// 从队列中删除元素
int MyQueue::pop()
{
if (front == 0) // 如果队列为空
{
return -1; // 返回 -1 表示操作无效
}
else
{
for (int i = 0; i < front - 1; i++) // 将队列中的元素向前移动一位
{
val[i] = val[i + 1];
}
front--; // 更新 front 指针
return val[0]; // 返回删除的元素
}
}
int main()
{
int n;
cin >> n; // 输入操作次数
MyQueue s; // 创建 MyQueue 类的对象
int num;
int x;
for (int i = 0; i < n; i++)
{
cin >> num; // 输入操作类型
switch (num)
{
case 1:
cin >> x; // 输入要插入的元素
s.push(x); // 调用 push 方法插入元素
break;
case 2:
x = s.pop(); // 调用 pop 方法删除元素
if (x == -1)
{
cout << "Invalid" << endl; // 若删除失败,则输出 "Invalid"
}
else
{
cout << x << endl; // 输出删除的元素
}
break;
case 3:
cout << s.size() << endl; // 输出队列的大小
break;
}
}
return 0;
}