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