0
点赞
收藏
分享

微信扫一扫

问题 D: 数据结构练习 -- 栈的操作

圣杰 2022-04-18 阅读 64
算法

题目描述

对输入整数序列1 2 3 ..执行一组栈操作,输出操作的出栈序列。

输入

每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈,Q表示出栈。每个操作序列长度不超过1000。

输出

对每个操作序列,输出出栈序列,若操作序列有错误,如栈空时执行出栈操作,输出error。

样例输入 复制

PQPPQQPPPQPQ
PPPPQQP
PP
PQQPP
PPQQ

样例输出 复制

1 3 2 6 7 
4 3 

1 error
2 1 

提示

注意,Sample Input中第三行没有出栈操作,因此输出一个空行。

先来个循环,判断输入的字符串是Q还是P,若是P就将j加1然后入栈,若是Q就将栈顶元素出栈,注意判断当栈为空的时候再出栈就输出error!

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[1000];
    while(cin>>s)
    {
        int n=strlen(s),j=0;
        stack<int>num;
        for(int i=0;i<n;i++)
        {
            if(s[i]=='P')
            {
                j++;
                num.push(j);
            }
            if(s[i]=='Q')
            {
                if(num.size())
                {
                    cout<<num.top()<<" ";
                    num.pop();
                }
                else
                {
                    cout<<"error";
                    break;
                }
            }
        }
        cout<<endl;
    }
}

 

举报

相关推荐

0 条评论