【问题标题】:Push pop top in stack c ++在堆栈c ++中推送弹出顶部
【发布时间】:2020-12-19 02:38:19
【问题描述】:

我有一个空的整数堆栈,以及以下格式的 q 个查询: push x : 在栈顶添加 x pop:移除栈顶 Top:打印栈顶 例子 输入: 10 推 5 最佳 推 6 最佳 推 3 最佳 流行音乐 最佳 流行音乐 最佳 输出: 5 6 3 6 5 我会把我的代码放在评论中,因为我不知道如何把它放在这里..我知道这是非常错误的,但我需要帮助来改进它


#include <iostream>
#include <stack>

using namespace std;

int main()
{
    stack<int>st;
    int n,a;
    cin>>n;
    string s;
    cin>>s;

    for(int i=0;i<n;i++)
    {
        if(s=="push")
        {
            cin>>a;
            st.push(a);
        }

        if(s=="pop")
            st.pop() ;

        if(s=="top")
            cout<<st.top()<<endl;
    }
}

【问题讨论】:

  • 要将您的代码添加到您的问题中,请对其进行编辑并在指定位置复制并粘贴您的代码。
  • #include #include using namespace std; int main() { 堆栈st;诠释n,a;辛>>n;字符串 s;辛>>s; for(int i=0;i>a; st.push(a); } if(s=="pop") st.pop() ; if(s=="top") cout
  • 先生,我试过了,但它不起作用
  • 它说糟糕!无法提交您的答案,因为:您的帖子似乎包含未正确格式化为代码的代码。请使用代码工具栏按钮或 CTRL+K 键盘快捷键将所有代码缩进 4 个空格。如需更多编辑帮助,请单击 [?] 工具栏图标。
  • 什么问题。 “我需要帮助来改进它”不是问题。您发布的问题应包括对您的代码打算做什么、它似乎在做什么、这些事情有何不同、到目前为止您所做的任何调试工作以及迄今为止这些工作取得了什么成果的描述。相关的,字符串比较区分大小写,例如,“Pop”永远不会等于“pop”。如果我们相信样本输入数据是准确的。

标签: c++ stack


【解决方案1】:

你需要再检查一个条件,栈是否为空,比如if(s=="pop" &amp;&amp; s.empty() == false),然后只有你可以弹出。与顶部类似的事情。否则当堆栈为空时代码将抛出运行时错误。另外,请尝试使用#include&lt;bits/stdc++.h&gt;。除此之外,由于根据您的问题有q个查询,您需要在for循环中使用cin&gt;&gt;s

【讨论】:

  • 尝试使用#include这是不可移植的,非标准的,并且不必要地拉入标准库中的每个标头。
  • 那你可以离开它,如果它不便携。
【解决方案2】:

我没有看到for 循环的用途,如编码。相反,(并在船上接受旅行的答案),我会这样做:

int main()
{
    stack<int>st;

    for ( ; ; )
    {
        string s;
        cin >> s;

        if(s=="push")
        {
            int a;
            cin>>a;
            st.push(a);
        }

        if(s=="pop")
        {
            if (!st.empty ())
                st.pop() ;
            else
                cout << "Stack is empty\n";
        }

        if(s=="top")
        {
            if (!st.empty ())
                cout<<st.top()<<endl;
            else
                cout << "Stack is empty\n";
        }

        if(s=="quit")
            break;
    }
}

另外,我已将sa 的声明移动到尽可能接近使用点。

【讨论】:

  • sandera 但现在代码不会停止我希望它在执行 q 查询后停止
  • @sondosToney 为什么?当用户告诉它时它停止不是更好吗?
  • 您有 Facebook 或 Instagram 等社交媒体帐户,以便我与您交流吗?
  • @sondosToney No.
  • 好的,谢谢你的回答..我编辑了一些,现在它是最好的答案
猜你喜欢
  • 2018-06-12
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 2014-12-19
相关资源
最近更新 更多