请实现一个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,请输出队列长度。
每个输出项最后换行。
#include<iostream>
using namespace std;
class MyQueue{
public:
static int queue[10000];
static int count;
static int size();
static void push(int x);
static int pop();
};
int MyQueue::count=0;
int MyQueue::pop()
{
int pop_number=0;
if(count==0)
cout<<"Invalid"<<endl;
else
{
pop_number=queue[0];
int i=0;
for(i=0;i<count;i++){
queue[i]=queue[i+1];
}
queue[count-1]=0;
count-=1;
}
return pop_number;
}
int MyQueue::size()
{
return count;
}
void MyQueue::push(int x)
{
queue[count]=x;
count+=1;
}
int main()
{
int n,i,x,y,count=0,pop_number=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
switch(x)
{
case 1:
{
cin>>y;
MyQueue::push(x);
break;
}
case 2:
{
pop_number=MyQueue::pop();
cout<<pop_number<<endl;
break;
}
case 3:
{
count=MyQueue::size();
cout<<count<<endl;
break;
}
}
}
return 0;
}
#include<iostream>
using namespace std;
class MyQueue
{
private:
int *queue;//[10000];
int count;
int max;//最大长度
public:
MyQueue(){max=count=0;queue=NULL;}
MyQueue(int n);
~MyQueue();
int size();
void push(int x);
int pop();
};
MyQueue::MyQueue(int n)
{
max=n;
count=0;
queue=new int[n];
}
MyQueue::~MyQueue()
{
delete[] queue;
}
//int MyQueue::count=0;
int MyQueue::pop()
{
int pop_number=0;
// if(count==0 || queue==NULL)//
// {
// cout<<"Invalid"<<endl;
// return pop_number;
// }
if(count>0)//队列不为空则出队
{
pop_number=queue[0];
for(int i=0; i<count-1; i++)//
{
queue[i]=queue[i+1];
}
//queue[count-1]=0;
count-=1;
}
return pop_number;
}
int MyQueue::size()
{
return count;
}
void MyQueue::push(int x)
{
if(count==max)//队列已满
{
cout<<"Invalid"<<endl;
return;
}
queue[count]=x;
count+=1;
}
int main()
{
int n,i,x,y,count=0,pop_number=0;
cin>>n;
MyQueue mq(n);
for(i=0; i<n; i++)
{
cin>>x;
switch(x)
{
case 1:
{
cin>>y;
mq.push(x);
break;
}
case 2:
{
if(mq.size()==0)
cout<<"Invalid"<<endl;
else
{
pop_number=mq.pop();
cout<<pop_number<<endl;
}
break;
}
case 3:
{
count=mq.size();
cout<<count<<endl;
break;
}
}
}
system("pause");
return 0;
}
#include<iostream>
using namespace std;
class MyQueue {
int queue[1000] = {0};
void fix();
public:
int start = 0;;
int end = 1;
int size();
void push(int x);
int pop();
};
void MyQueue::fix()
{
int num = end - start + 1;
memcpy_s(queue,num*sizeof(int),queue+start, num * sizeof(int));
start = 0;
end = num - 1;
}
int MyQueue::pop()
{
int pop_number = -1;
if (end-start == 1)
cout << "Invalid" << endl;
else
{
pop_number = queue[++start];
}
return pop_number;
}
int MyQueue::size()
{
return end - start - 1;;
}
void MyQueue::push(int x)
{
if (end == 1000)
{
fix();
}
if (end == 1000)
{
cout << "is Full\n";
return ;
}
queue[end++] = x;
}
int main()
{
MyQueue Q;
for (int i = 0 ; i < 99 ; i++)
{
Q.push(i);
cout<<Q.pop()<<endl;
}
for (int i = 0; i < 1000; i++)
{
Q.push(i);
//Q.pop();
}
while (Q.size() != 0)
{
cout << Q.pop() << endl;
}
int n, i, x, y, count = 0, pop_number = 0;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> x;
switch (x)
{
case 1:
{
cin >> y;
Q.push(x);
break;
}
case 2:
{
pop_number = Q.pop();
cout << pop_number << endl;
break;
}
case 3:
{
count = Q.size();
cout << count << endl;
break;
}
}
}
return 0;
}
C6262警告