c++ STL 容器适配器 stack

概念

stack是一种容器适配器,后进先出的特性。其底层是基于deque实现的。支持的操作很少,如下:
empty
size
back
push_back
pop_back
,实际上本人基本没用stack,只有在学习数据结构的时候,括号匹配用到了stack。

用法举例

void LargeModel::stackPractice()
{
	string   phrase = "[5+3*2/5*(2+3*6)]+5*2";
	std::cout << "phrase is " << (isCorrect(phrase) ? "correct" : "wrong")<<std::endl;
}

bool LargeModel::isCorrect(string phrase)
{
	stack<char>   sk;
	for (int i = 0; i < phrase.size(); i++)
	{
		if (phrase[i] == '[' || phrase[i] == '(')
		{
			sk.push(phrase[i]);
		}
		else if (phrase[i] == ']' || phrase[i] == ')')
		{
			if (phrase[i] == ']' && sk.top() == '['
				|| phrase[i] == ')' && sk.top() == '(')
			{
				sk.pop();
			}
		}
	}
	return sk.empty()?true:false;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凯鲁吉亚不信

你的鼓励将是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值