/**
* @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实现一个栈
2. **Stack类**:Java标准库中的`java.util.Stack`类也是实现栈的一个选项。它是`Vector`类的子类,因此具有线程安全的特性。但通常,由于其性能较低,推荐使用`ArrayDeque`。使用`Stack`类的示例如下: ```java ...
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
java实现的顺序栈,部分代码:public class OrderStack { int top=-1; String[] stack; public OrderStack(int initcap)throws Exception{ if(initcap){
3. 如何使用Java实现SIP客户端和服务器端。 4. Eclipse开发环境的使用和调试技巧。 5. Ant构建工具的使用。 6. 日志记录和调试技术。 7. 依赖管理和库的引入。 此外,还可以深入了解网络编程、多线程处理、异常处理...
试用java.util.Stack泛型栈作为父类,用另一个泛型栈对象作为成员变量,模拟实现一个泛型子类Queue,当存储元素的第1个栈的元素超过dump时,再有元素入队列就倒入第2栈。除提供无参构造函数Queue( )外,其它所有队列...
### 栈的Java语言实现详解 #### 一、栈的基本概念 栈是一种特殊的线性表,只允许在表的一端...这些内容不仅有助于理解栈的工作原理,还能帮助读者掌握栈的Java实现技巧,为进一步学习算法和数据结构打下坚实的基础。
Java提供了`java.util.Stack`类来实现栈。它继承自`Vector`类,因此提供了丰富的线程安全的方法,如`push()`, `pop()`, `peek()`等。在这个计算器项目中,我们可以创建一个栈对象来存储数字和运算符。 3. **表达式...
Java实现顺序栈是一种常见的数据结构操作,主要用于存储和管理元素序列。栈是一种后进先出(LIFO,Last In First Out)的数据结构,通常用于执行回溯、递归等算法。在Java中,我们可以使用数组或ArrayList来实现顺序...
“计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说,这是一道必须要掌握的算法题。中缀表达式、...
java api 中也有stack,这个是根据stack的特性编写出来的; 此程序在功能上和java提供的功能是一样的,只是实现的方法不一样;
本篇文章将深入探讨如何在Java中实现一个栈。 首先,Java的`java.util`包中已经为我们提供了一个现成的栈类`java.util.Stack`,它是`Vector`类的一个子类。`Stack`类提供了很多方便的方法,如`push()`用于压栈,`...
java内存模型和线程安全,详细解析java的 堆栈模型和线程机制
实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。
下面将详细解释这些概念及其Java实现。 **线性表** 是一种基本的数据结构,它是由n(n>=0)个相同类型元素构成的有限序列。线性表中的元素具有顺序关系,即每个元素都有一个前驱和后继,除了第一个元素没有前驱,...
实现弹栈,进栈,判断栈是否为空或满等功能 Java入门的简单程序
Java实现栈的基本操作
Hui.java可能是实现栈的辅助类,它可能包含了栈操作的定义,如压栈(push)和弹栈(pop)等方法。例如: ```java public class Hui { private char[] stack; private int top; public Hui(int size) { stack =...
使用java实现栈和队列,通过接口实现多态
6. **栈结构**:"用java实现一个栈结构.txt"可能介绍了如何用Java实现栈,栈是一种后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等。 7. **递归**:"递归问题的编程.txt"可能包含递归算法的实现和分析。...