java-栈
栈(stack)某种意义上讲,它像是一个开口的盒子,先放进去的东西总是会被后放进去的东西压在下面,那么如果想拿出被压住的东西,必须要先取出顶部的东西,也就是后放进去的东西。换个说法就是先入后出。
package cn.goktech.stack;
/**
* push
* pop
* peek检视
*
* @author lenovo
*
* @param <T>
*/
public class Stack<T> {
private int size;
private int top;//定义栈顶
private Object[] data;
private int len;
/**
* 构造器
*
* @param len
*/
public Stack() {
this.size = 0;
this.top = 0;
this.len = 10;
this.data = new Object[10];
}
public Stack(int len) {
this.top = -1;
this.size = 0;
if (len <= 0) {
len = 10;
}
this.len = len;
data = new Object[len];
}
/**
* 入栈
*
* @param t
* @return
*/
public boolean push(T t) {
if (size == len) {
return false;
} else {
data[++top] = t;
size++;
return true;
}
}
public T pop() {
if (size == 0) {
return null;
} else {
T t = (T) data[top--];
size--;
return t;
}
}
public boolean peek() {
if (size == 0) {
return false;
} else {
T t = (T) data[top];
System.out.println(t);
return true;
}
}
public int size() {
return size;
}
public static void main(String[] args) {
Stack<Integer> inStack = new Stack<>();
inStack.push(1);
inStack.push(2);
inStack.push(3);
System.out.println(inStack.pop());
System.out.println(inStack.pop());
System.out.println(inStack.pop());
}
}