leetcode c++栈

本文介绍了栈这一数据结构,强调了其先进后出的特性,并讨论了静态栈与动态栈的区别。通过举例说明了栈的操作,如push、pop、empty等,以及在LeetCode解题中可能遇到的报错问题。文章还提供了两个具体的解题思路,一个是利用栈判断括号的匹配性,另一个是使用栈进行数学运算,提到了需要注意的细节和陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈(堆栈)
栈类似一个瓶子,只能从一个口进出,属于一种线性表数据结构。堆栈存在两种操作:插入与删除。
在这里插入图片描述
瓶口就是栈顶,瓶底就是栈底,当栈里面没有元素时就是空栈。服从先进后出原则,越靠近瓶口的就越早出来。存储方式:顺序存储(类似数组,数组与容器,)与链式存储(类似单链表).
堆栈还可以分成:
静态栈:栈的大小固定,类似数组
动态栈:栈的大小会发生改变,类似链表
栈的操作
1.入栈 push()
2.出栈 pop()
3.空栈 empty()
4.获取当前元素则使用 top()
5.获取栈的大小size()
提示
当使用栈的时候,使用top前必须要判断一下栈是否为空,否则会出现下面的情况

Line 171: Char 16: runtime error: reference binding to misaligned address 0xbebebebebebec0ba for type ‘int’, which requires 4 byte alignment (stl_deque.h)
0xbebebebebebec0ba: note: pointer points here

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/…/lib/gcc/x86_64-linux-gnu/9/…/…/…/…/include/c++/9/bits/stl_deque.h:180:16

示例
在这里插入图片描述
存在错误的代码

class Solution {
   
   
public:
    bool isValid(string s) {
   
   
       int length = s.length();
       if(length % 2!=0) return false;
       stack<int> st;
       for(int i=0;i<length;i++){
   
   
           if(s[i]=='(') st.push(')');
           else 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值