栈与队列浅介

操作一波栈与队列

栈和队列分别包括在头文件<stack> 和 <queue> 中

对栈(FILO, 先入后出)的操作:

定义栈 : stack<int> stk;

  • s.empty()            如果栈为空返回true,否则返回false  
  • s.size()                返回栈中元素的个数  
  • s.pop()                删除栈顶元素 
  • s.top()                 返回栈顶的元素 
  • s.push()              在栈顶压入新元素 

    对队列(FIFO, 先入先出)的操作:

    定义队列:queue<int>que

  • q.empty()              如果队列为空返回true,否则返回false     q.back()                返回队列尾元素的值,但不删除该元素
  • q.size()                返回队列中元素的个数  
  • q.pop()                 删除队列首元素但不返回其值  
  • q.front()               返回队首元素的值,但不删除该元素  
  • q.push()                在队尾压入新元素 
  • 探讨一个小题
  • #include <stack>
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	stack<int> S;
    	int n;
    	__int64 sum;
    	while(~scanf("%d", &n))
    	{
    		sum = 0;
    		int m;
    		scanf("%d", &m);
    		S.push(m);
    		for(int i = 1; i < n ; i++)
    		{
    			scanf("%d", &m);
    			while(!S.empty() && m >= S.top())
    			       S.pop();
    			sum += S.size();
    			S.push(m);
    		}
    		printf("%I64d", sum);
    		while(!S.empty())
    		      S.pop();
    	}
    	return 0;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值