C++知识点总结(28):STL(stack、queue、优先队列)

一、STL

标准模板库(STL)中包含了很多实现各种功能的系统函数,包括常用数据结构和算法。

二、stack

1. 定义

使用栈添加头文件:stack
定义格式:stack <数据类型> 栈名;

#include <stack>
stack <int> s;

2. 功能

语句 功能
push(x) 元素 x x x 入栈
pop() 将栈顶元素弹出
top() 查询栈顶元素
empty() 查询栈是否为空(栈空返回 true
size() 查询栈的元素个数

3. 真题

T1 栈基本操作

T1.1 审题

题目描述

给出n种栈操作,包括:
push x:将整数 x 入栈;
pop:弹出栈顶,成功则输出 "pop x",否则输出 "pop fail"
top:查询栈顶元素,成功则输出 "top=x",否则输出 "top fail"
size:查询栈内元素个数,输出 "size=x"
empty:查询栈是否为空,为空则输出 y,否则输出 n

输入描述

第一行,整数 n n n,表示 n n n 次操作。
接下来 n n n 行,每行一个操作。

输出描述

根据操作要求输出。

样例1

输入

5
push 5
size
top
pop
empty

输出

size=1
top=5
pop 5
y

提示

1 ≤ n ≤ 100 1\le n\le100 1n100

T1.2 参考答案
#include <iostream>
#include <stack>
using namespace std;

int main()
{
   
   
	int n, x;
	cin >> n;
	string c;
	stack <int> s; // 定义栈s
	
	for (int i = 1; i <= n; i++)
	{
   
   
		cin >> c;
		if (c == "push")
		{
   
   
			cin >> x;
			s.push(x); // 入栈 
		}
		else if (c == "pop")
		{
   
   
			if (!s.empty()) // 判断栈是否为空 
			{
   
   
				cout << "pop " << s.top() << endl; // 输出栈顶 
				s.pop(); // 出栈 
			}
			else
			{
   
   
				cout << "pop fail\n"; // 输出pop fail
			}
		}
		else if (c == "top")
		{
   
   
			if (!s.empty()) // 判断栈是否为空 
			{
   
   
				cout << "top=" << s.top() << endl; // 输出栈顶 
			}
			else
			{
   
   
				cout << "top fail\n"; // 输出top fail
			}
		}
		else if (c == "size")
		{
   
   
			cout << "size=" << s.size() << endl;// 输出栈大小 
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值