队列及其操作(c++题解)

题目描述

队列(queue):在线性表的一端插入元素,在另一端删除元素,所以遵循先进先出( **FIFO**)原则,元素从队尾进,队首出,不允许插队!

其中删除元素的一端称为队首(front),插入元素的一端称为队尾(rear)。

队列就像我们排队打饭,先来的先打饭,后来的只能排在队尾。

输入格式

第1行包含一个整数 ,表示有  条关于 queue 的操作,在进行任何操作之前,queue 都是空的。接来的  行,每行是一个关于 queue 的操作,格式和含义如下:
clear:把队列置空。

empty:判断队列是否为空。

push:把整数 x 插入队尾(x 为 int 范围里的数)。

pop: 队首元素出队列。

front:获取队首元素的值。

输出格式

对于 front 操作,输出一个整数,如果这个操作失败,则输出单词 ”error”。

对于 pop 操作,如果这个操作失败,则输出单词 “error”。

对于 empty 操作,如果队列是空,则输出 ”empty”,否则输出 ”not empty”。

样例

输入样例

A.in

复制8
push 10
front 
push 15
pop
front 
clear
front
pop
输出样例

A.out

复制10
15
error
error

_____________________________________________________________________________

日常发作业题解。 

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include 
using namespace std;
int que[1000005],a=1,b,n,y;//a为队首,b为队尾
string x;
void push(int x){
	que[++b]=x;
}
void pop(){
	a++;
}
int front(){
	return que[a];
}
int empty(){
	
	if(b-a+1==0)return 1;
	else return 0;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>x;
    	if(x[0]=='p'&&x[1]=='u'){
    		cin>>y;
    		push(y);
		}
		else if(x[0]=='p'){
			if(empty()==1)cout<<"error\n";
			else pop();
		}
		else if(x[0]=='f'){
			if(empty()==1)cout<<"error\n";
			else cout<

 

你可能感兴趣的:(c++,算法,数据结构)