/**
* @Project: Test
* @File: org.coffeesweet.test01.Test19.java
* @Author: coffeesweet
* @Date: 2011-6-7
* @Description: 2011 coffeesweet Inc. All rights reserved.
*/
package org.coffeesweet.test01;
import java.util.LinkedList;
/**
* @author coffeesweet
*
*/
public class Test19 {
public static void main(String[] args){
Long[] numList = new Long[]{1L,5L,3L,2L,1L,5L,7L,6L,7L,8L,-1L,-5L,2L,7L,2L,3L,5L,9L,9L};
Test19 t19 = new Test19();
MaxNumStack mns = t19.new MaxNumStack();
for(int i=0;i<numList.length;i++){
mns.push(numList[i]);
}
System.out.println(mns.pop());
System.out.println(mns.pop());
System.out.println(mns.top());
System.out.println(mns.getMaxNum());
}
private class MaxNumStack{
private LinkedList<Long> stackList = new LinkedList<Long>();
private LinkedList<Long> maxNumList = new LinkedList<Long>();
public void push(Long num){
stackList.addLast(num);
if(maxNumList.isEmpty()||(maxNumList.getLast().compareTo(num)<1)){
maxNumList.addLast(num);
}
}
public Long pop(){
if(stackList.isEmpty())return null;
if((maxNumList.getLast().compareTo(stackList.getLast())<1))maxNumList.removeLast();
return stackList.removeLast();
}
public Long top(){
return stackList.getLast();
}
public boolean isEmpty(){
return stackList.isEmpty();
}
public Long getMaxNum(){
if(maxNumList.isEmpty())return null;
return maxNumList.getLast();
}
}
}
分享到:
相关推荐
用Java实现一个栈
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
用java写的简单栈的实现,欢迎大家使用
java实现的顺序栈,部分代码:public class OrderStack { int top=-1; String[] stack; public OrderStack(int initcap)throws Exception{ if(initcap){
试用java.util.Stack泛型栈作为父类,用另一个泛型栈对象作为成员变量,模拟实现一个泛型子类Queue,当存储元素的第1个栈的元素超过dump时,再有元素入队列就倒入第2栈。除提供无参构造函数Queue( )外,其它所有队列...
java实现顺序栈
java模拟栈实现回文串的判断,适合新手学习!
“计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说,这是一道必须要掌握的算法题。中缀表达式、...
java api 中也有stack,这个是根据stack的特性编写出来的; 此程序在功能上和java提供的功能是一样的,只是实现的方法不一样;
实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。
Java用栈实现的计算器,界面用swing实现,不支持括号
实现弹栈,进栈,判断栈是否为空或满等功能 Java入门的简单程序
Java实现栈的基本操作
java实现的栈
栈的顺序存储结构及Java实现 //MyStack.java public class MyStack { int MAX_SIZE = 100; int top; String[] stack; public void init(String[] array){ stack = new String[100]; top = -1; for (int i = ...
-- sip协议栈基于java的源码实例、内含jar包,用Eclipse直接打开运行。 -- 先运行server.java的main方法,再运行client.java的main方法
java内存模型和线程安全,详细解析java的 堆栈模型和线程机制
使用java实现栈和队列,通过接口实现多态
每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私有的栈。进程所创建的所有类的实例(也...
线性表,单链表,栈的代码实现,java简单实现,内附有代码少许注释