为什么我从堆栈中弹出第二个时会出现此错误?

问题描述 投票:0回答:0

`

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack <int> st;
       for(int i=0;i<tokens.size();i++){
           string s = tokens[i];
           if(isdigit(s[0]))
                st.push(stoi(s));
            else{
                    int top =st.top();
                    st.pop();
                    int second = st.top();
              ---------->      st.pop();  <-----------
                    switch(s[0]){
                        case '/':
                            second /= top;
                            break;
                        case '*':
                            second *= top;
                            break;
                        case '+':
                            second += top;
                            break;
                        case '-':
                            second -= top;  
                            break;
                        default:
                            break;      
                    }
                    st.push(second);
                }

       }
       
       return st.top(); 
        
    }
};

此代码用于解决 leetcode 问题 150. Evaluate Reverse Polish Notation。 该代码在某些情况下运行良好,但并非所有情况都适用,因此我在代码中添加了我指向的 st.pop() 并且我收到此运行时错误:the error

我不完全理解错误。 **我试过**检查堆栈是否为空,但没有用。 无论如何我知道如何解决 leetcode 问题并且逻辑是正确的......我有兴趣了解这段代码有什么问题

如果我不清楚,请不要判断这是我第一次在这里提问

stack alignment
© www.soinside.com 2019 - 2024. All rights reserved.