【C++ | PTA】队列操作

文章目录

题目要求

请实现一个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;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值