hdu1702 ACboy needs your help again![简单STL 栈 队列]

题目地址

hdu1702

题干


代码和解释

本题很简单,只要掌握STL stack和STL vector的语法即可作答。记录本题是为了记录STL vector的操作。
注意需要#include<stack>#include<vector>
这里是c++代码。

#include<iostream>
#include<stack>
#include<queue>
#include<string.h>
using namespace std;
void stack_opr(int m);
void queue_opr(int m);
int main()
{
	int n;
	int m;
	char ff[10];
	scanf("%d",&n);
	while(n--){
		scanf("%d",&m);
		getchar();
		scanf("%s",ff);
		if(strcmp(ff,"FILO")==0){
			stack_opr(m);
		}
		else if(strcmp(ff,"FIFO")==0){
			queue_opr(m);
		}
	}
	return 0;
}
void stack_opr(int m){
	char io[4];
	int num;
	int i;
	stack<int> s;
	for(i=0;i<m;i++){
		scanf("%s",io);
		if(strcmp(io,"IN")==0){
			scanf("%d",&num);
			s.push(num);
		}
		else if(strcmp(io,"OUT")==0){
			if(s.empty()==1){
				printf("None\n");
			}
			else{
				printf("%d\n",s.top());
				s.pop();
			}
		}
	}
	return;
}
void queue_opr(int m){
	char io[4];
	int num;
	int i;
	queue<int> q;
	for(i=0;i<m;i++){
		scanf("%s",io);
		//printf("io=%s\n",io);
		if(strcmp(io,"IN")==0){	
			scanf("%d",&num);
			q.push(num);
		}
		else if(strcmp(io,"OUT")==0){
			if(q.empty()==1){
				printf("None\n");
			}
			else{
				printf("%d\n",q.front());
				q.pop();
			}
		}
	}
	return;
}

参考

例子 说明
queue q; 定义栈,Type为数据类型,如int,float,char等
q.push(item); 把item放进队列
q.front(); 返回队首元素,但不会删除
q.pop(); 删除队首元素
q.back(); 返回队尾元素
q.size(); 返回元素个数
q.empty(); 检查队列是否为空
posted @ 2019-07-26 17:03  平静的雨田  阅读(240)  评论(1编辑  收藏  举报