2021.12.3打卡(栈)

栈的特点就是先进的后出,后进的先出。

stack(栈)的常用函数:

stack< int > a : 创建一个空的堆栈对象a

push () : 插入新元素(入栈)

pop () : 删除栈中的栈顶元素(出栈)

top () : 栈顶元素

empty () : 检测stack内是否为空,若为空返回true,否则返回false

size () : 返回stack内元素的个数

题目

~~~

2021.12.3打卡(栈)

Sample Input

5
3 4 2 1 5
5
3 5 1 4 2
0

Sample Output

Yes
No

~~~

#include<bits/stdc++.h>
using namespace std;
stack<int>a;//创建一个空的堆栈对象a
int main()
{
    int n,q;
    while(scanf("%d",&n)&&n!=0){//输入的数不等于0,就继续循环
        while(!a.empty())//堆栈不为空,删除顶部元素
            a.pop();
            int tip=1,b[1000],flag=0;
        for(q=0;q<n;q++)//输入要判断的数
            scanf("%d",&b[q]);
        for(q=0;q<n;q++){
            if(b[q]>=tip){//如果要入栈的数大于顶部的数,就将小于b[q]的数依次入栈
                for(int i=tip;i<b[q];i++)
                    a.push(i);//入栈
                tip=b[q]+1;
            }
            else{
                if(a.top()==b[q]) a.pop();//如果栈顶元素等于要入栈的数,就将其删掉
                else{printf("No\n");flag=1;break;}//否则出栈序列就不合理
            }
        }
        if(flag==0) printf("Yes\n");
    }
}

上一篇:运行rosrun rqt_gui rqt_gui 报错


下一篇:linux boost库安装