package stack;

import java.util.ArrayList;

/**

* 实现包含min函数的栈

* @author DHC

* @param

*/

public class MinInStack {

public static void main(String[] args) {

MinInStack newStack = new MinInStack();

newStack.push(4);

newStack.push(6);

newStack.push(2);

newStack.push(5);

newStack.pop();

newStack.pop();

newStack.push(1);

System.out.println(newStack.min());

}

public ArrayList stack = new ArrayList();

public ArrayList minStack = new ArrayList();

public T pop() {

int size = stack.size();

minStack.remove(size - 1);

return stack.remove(size - 1);

}

public void push(T item) {

int size = stack.size();

if (size == 0) {

minStack.add(0);

} else {

int minPosition = minStack.get(size - 1);

T minData = stack.get(minPosition);

if (compare(minData, item)) {

minStack.add(stack.size());

} else {

minStack.add(minPosition);

}

}

stack.add(item);

}

public T peek() {

int size = stack.size();

return stack.get(size - 1);

}

public T min() {

int size = minStack.size();

return stack.get(minStack.get(size - 1));

}

public boolean isEmpty() {

return stack.isEmpty();

}

/**

* 泛型元素的比较方法

* @param minData

* @param item

* @return true 代表当前元素小于之前的最小元素

*/

private boolean compare(T minData, T item) {

// 这儿不同的泛型类型可以用不同的方式实现

// 如果写成通用代码泛型之间应该肿么比较大小呢?是不是可以让泛型都继承某一接口呢?

int a = (Integer) minData;

int b = (Integer) item;

if(a > b) {

return true;

} else {

return false;

}

}

}

posted on 2012-01-31 15:57 墙头草 阅读(982) 评论(0)  编辑  收藏

java的min函数_Java语言实现包含min函数的栈相关推荐

  1. java的匿名函数_JAVA语言中的匿名函数详解

    本文主要向大家介绍了JAVA语言中的匿名函数详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.使用匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: ...

  2. python文件定位函数_C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  3. c 语言 内部函数与外部函数,C语言-内部函数与外部函数.doc

    C语言-内部函数与外部函数 吩算彭毙摊鬼笺选瓦瑞疡呐缴识曹研酥腹怕语透逆谓撮渴聋脐壤本精俄漏煎电米履详醋捐丧减掩敷挣煮阜祖锁锨溃睹喉爪冯耍缀示瞎嘴允戏馅径俊窗嚣节愈娶涩睡给峪凄灼助凝棍妻凌瞬诵攻枝溜甥 ...

  4. java c++的区别_Java语言与C、C++之间的区别?

    小伙伴你知道吗?Java是由C++开发而来的,并且在当时一直被搁置.随着Java语言的崛起那么Java和C/C++有什么不同和相同之处呢? 通过上述我们知道那Java前身是C++,并且保留了C++的大 ...

  5. java程序设计基础篇_Java语言程序设计(基础篇) 第一章

    第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...

  6. keil lib 只调用自己的函数_C语言学习篇(28)——函数库

    引言 我们在编写代码时,常常会写一个.c源文件和与之对应的.h文件(例如a.c和a.h),并在源文件.c中定义(具体实现)一些函数,在.h文件中声明, 这样我们就可以在其他源文件中包含该头文件,来调用 ...

  7. 最小值c语言编写自定义函数,C语言笔记55:自定义函数[老九学堂]

    函数定义 return_type function_name ([datetype1 arg1],[datype2 arg2,[...]){ //函数体 } 函数三要素返回值类型 函数名 参数列表 书 ...

  8. c语言界面函数,C语言图形界面常用函数集锦

    (以下函数均应在图形方式初始之后使用(initgraph(a,b)),在win-tc中使用BGI图形程序模板时,其中已经定义有一个initgr函数,在main函数中应在执行initgr函数之后再使用这 ...

  9. c语言中creat函数,C语言open和creat函数

    初级I/O编程: open函数和creat函数 (1).open函数 名称:打开或若指定打开的文件不存在则创建 总揽: #include int open(const char *pathname,i ...

最新文章

  1. linux线程有什么用,在linux下查看一个进程它有多少个线程是用什么命令?
  2. 了解下WSDL 绑定
  3. kali下生成web端后门
  4. 关于计算机软件技术基础知识,计算机软件技术基础知识要点.doc
  5. 课下作业:评估输入法(搜狗)
  6. django实现web分页的三种方法
  7. 林超贤携彭于晏带《紧急救援》再度征战2020春节档
  8. 2018司法人工智能:罪名预测、刑期预测、法条推荐
  9. vue使用swiper插件
  10. 【服务器】WAMP一键安装PHP开发环境
  11. jQuery动画:实现渐入渐出
  12. android 下载服务器的txt文档
  13. 数独终盘生成器(调试成果)
  14. 报Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7的错误
  15. OpenCVForUnity色度图
  16. 项目,项目集与项目组合的关系
  17. 【iOS】AFNetworking
  18. WMT 2022国际机器翻译大赛发榜,微信翻译斩获三项任务冠军
  19. STM32c8t6驱动激光雷达(一)
  20. 《途客圈创业记:不疯魔,不成活》一一1.3 iWeekend创业周末

热门文章

  1. java settime_Java日历setTime()方法及示例
  2. 在CSS中使用not:first-child选择器
  3. C# Winform 窗体美化(十、自定义窗体)
  4. redhat linux 6.5 vnc,redhat 6.5 YUM安装kvm 并用VNC远程管理
  5. debian apache php mysql,Debian下配置APACHE2+MYSQL5+PHP5
  6. oracle存储过程没有返回值,Java调用Oracle存储过程(无返回值)
  7. adaptivitypara设置选0还是1_喝牛奶,选全脂还是低脂?家里人能不能喝同1种牛奶?...
  8. 2014年计算机初级应用考试是,2014年国硕士研究生入学统一考试计算机基础试题...
  9. oracle10g导入dmp文件恢复,oracle 10g 恢复dmp文件。
  10. php getimagecompose,Docker进阶:Dockerfile以及docker-compose工具