PTA 队列操作 (10 分)

本文介绍了一个使用链表实现的自定义队列类MyQueue,包括入队、出队和获取队列长度的功能。通过具体代码示例,展示了如何处理不同类型的队列操作,并提供了一个测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请实现一个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> 
using namespace std;
typedef struct queue{
	int x;
	struct queue *next;
} LinkList;
class  MyQueue{
	LinkList *head, *node, *end; 
	static int j;
	public:
		MyQueue()
		{
			head=NULL; 
			node=NULL;
			end=NULL; 
			head=new LinkList;
			end=head;
			
		}
		void push(int x)
		{
	    	node=new LinkList;
			node->x=x;
			end->next=node;
			node=end; 
			j++;
		}
		void pop()
		{
			if(j==0)
		    	cout<<"Invalid"<<endl;
			else
			     {
			     	cout<<head->next->x<<endl;
			     	head->next=head->next->next;
			     	delete head->next;
		        	j--;
				 }
		}
		int size()
		{
			return j;
		}
};
int MyQueue::j=0;
int main(void)
{
	MyQueue ob;
	int n,i,c,d;
	scanf("%d",&n); 
	for(i=0;i<n;i++)
	{
		scanf("%d",&c);
		switch(c)
		{
			case 1:
				{
					scanf("%d",&d);
					ob.push(d);
					break;
				}
			case 2:ob.pop();break;
			case 3:cout<<ob.size()<<endl;break;
		}
	}
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值