//原理:利用两个栈,一个记录最小值,一个记录数据。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; namespace StackGetMinValues
{
public class Program
{
public void Main(string[] args)
{
MyStack myStack = new MyStack();
myStack.Push();
myStack.Push();
myStack.Push();
myStack.Push();
myStack.Push(-);
myStack.Push();
Console.WriteLine(myStack.GetMinValue()); myStack.Pop();
Console.WriteLine(myStack.GetMinValue()); myStack.Pop();
Console.WriteLine(myStack.GetMinValue()); Console.ReadLine(); } }
public class MyStack
{
public Stack<int> stackData;
public Stack<int> stackMin;
public MyStack()
{
stackData = new Stack<int>();
stackMin = new Stack<int>();
}
public void Push(int number)
{
if (number.GetType() != typeof(int)) throw new ArgumentException("必须输入数字"); if (stackData.Count() == )
{
stackData.Push(number);
stackMin.Push(number);
return;
} stackData.Push(number);
if (stackMin.Peek() > number)
{
stackMin.Push(number);
}
}
public int Pop()
{
if (stackData.Count() == ) throw new IndexOutOfRangeException("栈对象为空");
var value = stackData.Pop();
if (value == stackMin.Peek())
{
stackMin.Pop();
}
return value;
}
public int GetMinValue()
{
if (stackMin.Count() == ) throw new IndexOutOfRangeException("最小值栈对象为空"); return stackMin.Peek();
}
}
}

最新文章

  1. Ubuntu下利用Mono,Jexus搭建Asp.Net(MVC) Web服务器
  2. 2014 项目中用到batik
  3. Hibernate中的脏检查和缓存清理机制
  4. HDU 1896 Stones --优先队列+搜索
  5. Linux学习之八——利用变量
  6. Worm
  7. 新唐M0 ISP下载要点
  8. Log Explorer使用说明
  9. 第二十篇、自定义UIButton(设置title和image的位置)
  10. python 标准库基础学习之开发工具部分1学习
  11. Picasso 加载图片到RelativeLayout之解决方案
  12. 分析java中clone()方法 (转载+修改)
  13. Git 如何 clone 非 master 分支的代码
  14. springMVC源码分析--HandlerInterceptor拦截器(一)
  15. Ueditor增加文字竖排显示和从右向左输入(支持蒙古文和维吾尔文)
  16. jsp篇 之 脚本元素
  17. 基于selenium+phantomJS的动态网站全站爬取
  18. java ArrayList去重
  19. C# 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
  20. appium 元素文件 -查找元素 封装思路和方法

热门文章

  1. C++ 数组动态分配
  2. 解决本地mysql服务允许被外部主机连接
  3. JFreeChart与struts2整合实例
  4. 11.SUSE Linux服务器系统网卡配置重启问题
  5. 21.Nodejs基础知识(下)——2019年12月16日
  6. Java技术中如何使用keepalived实现双机热备
  7. Nginx-配置动静分离实例
  8. python学习笔记(十六)python操作redis数据库
  9. python 全栈开发,Day53(jQuery的介绍,jQuery的选择器,jQuery动画效果)
  10. Delphi实现获取磁盘空间大小的方法