C++stack栈的empty,top,pop,push函数

stack栈是一种先进后出的数据结构
初始化:

stack<char> stk;//初始化一个字符类型的栈,名字是stk

empty函数用来检查栈是否为空,如果为空返回真,不为空返回假
top返回栈顶的元素
pop用来弹出栈顶的元素
push用来将元素放到栈顶

if(stk.empty())
{
	cout << "stk is empty" << endl;
}
else
{
	cout << "the top is " << stk.top() << endl;
	stk.pop();
}
stk.pop('y');//插入y这个字符

给一道例题
力扣:有效的括号
https://leetcode.cn/problems/valid-parentheses/description/?envType=study-plan-v2&envId=top-interview-150
思路:
每次看是不是右括号,如果是就检查栈顶是不是对应左括号,如果不是就放到栈顶
代码:

class Solution {
public:
    bool isValid(string s) {
        int n = s.size();
        if(n % 2 == 1)
        {
            return false;
        }
        unordered_map<char,char> pair = 
        {
            {')','('},
            {']','['},
            {'}','{'}
        };
        stack<char> stk;
        for(auto ch : s)
        {
            if(pair.count(ch))
            {
                if(stk.empty() || stk.top() != pair[ch])
                {
                    return false;
                }
                stk.pop();
            }
            else
            {
                stk.push(ch);
            }
        }
        return stk.empty();
    }
};
  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个C语言实验报告的模板,供您参考: # 实验名称:C语言的实现 ## 实验目的: 1. 理解的基本概念和特点。 2. 掌握的基本操作:pushpop。 3. 熟悉的应用场景。 ## 实验环境: - 操作系统:Windows 10 - 编程语言:C语言 - 开发工具:Visual Studio Code ## 实验内容: ### 1. 的定义 是一种后进先出(Last In First Out,LIFO)的数据结构,它只允许在表的一端进行插入和删除运算。根据的定义,可以使用数组来实现。 ### 2. 的基本操作 的基本操作包括pushpoppush操作将元素插入顶,pop操作将顶元素删除。 以下是的基本操作的伪代码: ``` push(S, x): if stack is full: error "stack overflow" else: top ← top + 1 stack[top] ← x pop(S): if stack is empty: error "stack underflow" else: top ← top - 1 return stack[top + 1] ``` ### 3. 的应用场景 广泛应用于编程语言的解析、函数调用、表达式求值等场景中。例如,在编程语言的解析过程中,可以使用来判断括号是否匹配。 ## 实验结果: 在实验过程中,我们成功实现了一个基于数组的,并完成了pushpop操作。通过实验,我们深入理解了的基本概念和特点,并掌握了的基本操作。同时,我们也熟悉了的应用场景,为以后的编程工作打下了基础。 ## 总结: 本次实验让我们掌握了的基本操作和应用场景,这对我们以后的编程工作非常有帮助。通过实验,我们也发现了的局限性,例如的存储空间有限,只能在顶进行插入和删除操作等。因此,在实际应用中,我们还需要结合具体场景选择合适的数据结构

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值