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

发布时间:2024年01月24日

题目描述

队列(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 <bits/stdc++.h>
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<<front()<<endl;
		}
		else if(x[0]=='e'){
			if(empty()==1)cout<<"empty\n";
			else cout<<"not empty\n";
		}
		else if(x[0]=='c')a=1,b=0;
	}
}

?

文章来源:https://blog.csdn.net/hb_zhyu/article/details/135820706
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。