NOIP3 基础数据结构(如何使用STL栈、单向队列)C++

如果是初学者建议先简单阅读一本通的数据结构

1.栈(stack)

栈又名堆栈,是一种运算受限的线性表其限制位仅允许在表的一端进行插入和删除,这一端被称为栈顶,相对的,另一端为栈底

用法:在求强连通分量的tarjan算法中要用栈来维护,实际上所有的递归程序本质上都是在调用系统栈。 看不懂没关系

C++ 提供了该容器。
在使用时需要#include <stack》

下面介绍用法

	//定义stack对象 
	stack <int> s;
	stack <char> s1;
	stack <string> s2;
	
	s.empty();
	//如果栈是空的,就返回1;否则就返回0
	
	s.size();
	//返回栈的元素个数
	
	s.top();
	//栈的顶部元素
	
	s.pop();
	//弹出栈的顶部元素
	
	s.push(x);
	//栈顶加入一个新元素x

你也可以自己用结构体写栈的操作,因为noip现在支持STL,比赛中为了尽可能避免一切失误,最好直接使用STL。(不考虑常数慢)

2.单向队列(queue)

队列也是一种运算受限的线性结构只允许在队列首部删除,队列尾部插入
队列的应用是在spfa或bfs等需要先来先走的情况。
队列也有STL。

试想一下,在生活中我们可能要排队取做一些事情(食堂打饭),先进入队列的就可以先离开,后进入的就要后离开。

下面介绍用法

	//定义单向队列 
	queue<int> q;
	queue<double> q2;
	
	//入队 ,将x加入队列末端 
	q. push(x);
	
	//出队,弹出队首元素(并不会返回值
	q.pop();
	
	//返回队首元素 
	q.front();
	
	//返回队尾元素
	q.back();
	
	//判断队列空,如果空返回true,有元素则返回false 
	q.empty();
	
	//返回队列的元素个数 
	q.size();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值