• 一,实现栈

     int s[100005],tot=0;

    #define push(x) s[++tot]=x

    #define pop tot--

    #define size tot

    #define top s[tot] 

    二,这个东西虽然有点简陋,但还是可以的。

    我觉得把这个东西按照,我习惯的结构体改一下。

     1 struct stack
     2 {
     3     int tot=0;
     4     int s[1000005];
     5     void push(int x)
     6     {
     7         s[++tot]=x;
     8     }
     9     void pop()
    10     {
    11         tot--;
    12     }
    13     //必有出栈入栈 
    14     int size()
    15     {
    16         return tot;
    17     }
    18     int top()
    19     {
    20         return s[tot];
    21     }
    22     //说实话,这两个操作就有点奇怪了。 
    23     //返回栈顶元素和栈内元素个数。 
    24 }q; 

    三,

    你想过结构题内最后两个功能为什么队列和栈不一样嘛?

    噢,。。front和top一样的意思。

    只是最后一个功能不一样,

    队列是empty(),栈是size()

    说实话我感觉这两个一样。

    四,

    (上面写的不错,可惜我要的是单调栈)

    单调栈洛谷有一道模板题。

    P5788。

    1,我用非单调队列做了一遍。。还得了个一半多的分

     1 #include<iostream>
     2 using namespace std;
     3 int n,s[10000005],ans[100005];
     4 int main(){
     5     cin>>n;
     6     for(int i=1;i<=n;i++)
     7         cin>>s[i];
     8     for(int i=1;i<=n;i++)
     9     {
    10         int mark=s[i];
    11     
    12         for(int j=i;j<=n;j++)
    13         {
    14         
    15             if(s[j]>mark)
    16             {
    17                 ans[i]=j;
    18                 break;
    19             }
    20         }
    21     }
    22     for(int i=1;i<=n-1;i++)
    23        cout<<ans[i]<<" ";
    24     cout<<"0";
    25     
    26 }

    2,当然要考虑怎么用单调栈。

    你知道我设计的单调栈问题出在哪了吗?就比如拿样例说话

    5
    1 4 2 3 5
    当你考虑第二个的时候,不停地往进放,当你放到第四个元素,也就是3的时候,因为每次跟栈顶比较,3比2大,此时记录的是4,
    但是,你要比的是4.。你要比四大的数唉。
  • 相关阅读:
    反射(五)之动态代理的作用
    反射(四)之反射在开发中的适用场景及利弊
    反射(三)之通过反射获取构造方法, 成员变量, 成员方法
    反射(二)之反射机制
    反射(一)之初探反射
    java多线程(五)之总结(转)
    java多线程(四)之同步机制
    java多线程(三)之售票案例
    java多线程(二)之实现Runnable接口
    java多线程(一)之继承Thread类
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12040039.html
Copyright © 2020-2023  润新知