您的位置:首页 > 其它

包含min操作的栈

2013-10-11 20:46 246 查看
MinStack.java

import java.util.ArrayDeque;
import java.util.Deque;

public class MinStack<T extends Comparable<T>> {

private Deque<CustomElem<T>> mDeque = new ArrayDeque<>();
private T mMinElem = null;

public void push(T t) {
CustomElem<T> elem = new CustomElem<>();
elem.mValue = t;
if (mMinElem == null) {
mMinElem = t;
}
if (mMinElem.compareTo(t) <= 0) {
elem.minElem = mMinElem;
} else {
elem.minElem = t;
mMinElem = t;
}
mDeque.push(elem);
}

public T min(){
CustomElem<T> elem = mDeque.getFirst();
return elem.minElem;
}

public void pop(){
mDeque.removeFirst();
}

class CustomElem<T> {
T mValue;
T minElem;
}

}


MinStackTest.java

public class MinStackTest {

public static void main(String[] args) {
MinStack<Integer> myStack = new MinStack<>();
myStack.push(4);
myStack.push(3);
myStack.push(5);
myStack.push(1);
System.out.println(myStack.min());
myStack.pop();
System.out.println(myStack.min());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: