public class Text02<E> {
private Object[] num = null;
private int size = 0;
private static final int Len = 10;
public Text02(){
num = new Object[Len];
}
//入栈
public void push(E element){
if(size == 0){
num[0] = element;
size++;
}
//扩容条件
if(size == num.length){
Object[] newArray = new Object[num.length + (num.length>>1)];
num = newArray;
}
num[size++] = element;
if(compareTo(num[0], num[size - 1])){
num[0] = num[size - 1];
}
}
//取最小值,第一个对象是num[0]
public boolean compareTo(Object a, Object b){
String x = a.toString();
String y = b.toString();
if(Integer.valueOf(x) - Integer.valueOf(y) > 0){
return true;
}
return false;
}
//弹出
public E pop(){
if(num[1].equals(null)){
throw new RuntimeException("栈为空");
}
Object temp = num[--size];
num[size] = null;
return (E)temp;
}
//获得栈顶
public E peek(){
return (E)num[size - 1];
}
//取最小值
public E getMin(){
return (E)num[0];
}
//重写toString方法
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append('[');
for(int i = 1; i < size; i++){
sb.append(num[i] + ",");
}
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
}
public static void main(String[] args) {
Text02 t = new Text02();
t.push(2);
t.push(4);
t.push(5);
t.push(1);
t.push(3);
t.push(7);
t.push(6);
t.push(8);
System.out.println(t);
System.out.println(t.pop());
System.out.println(t.peek());
System.out.println(t);
System.out.println(t.getMin());
}
}
手工实现栈操作
最新推荐文章于 2021-11-02 20:12:46 发布