import java.util.ArrayList;
import java.util.List;
public class SNode<T> {
//使用java中自带的数组作为基本的变量
private List<T> data;
private int top;
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public int getTop() {
return top;
}
public void setTop(int top) {
this.top = top;
}
public SNode() {
this.data=new ArrayList<T>();
this.top=-1;
}
public SNode(List<T> data, int top) {
this.data = data;
this.top = top;
}
}
package stack;
public class StackByArray<T> {
private SNode<T> stack;
public StackByArray(SNode<T> stack) {
this.stack = stack;
}
public StackByArray() {
stack=new SNode<T>();
}
public SNode<T> getStack() {
return stack;
}
public void setStack(SNode<T> stack) {
this.stack = stack;
}
//查看栈顶的元素
public T peek(){
if(stack.getTop()==-1)return null;
return stack.getData().get(stack.getTop()+1);
}
//删除栈顶的元素
public T pop(){
if(stack.getTop()==-1)return null;
T data=stack.getData().get(stack.getTop());
stack.setTop(stack.getTop()-1);
return data;
}
//压栈
public void push(T mydata){
stack.setTop(stack.getTop()+1);
stack.getData().add(stack.getTop(), mydata);
}
//栈的容量
public int size(){
return stack.getTop()+1;
}
//清空栈
public void clear(){
stack.setTop(-1);
stack.getData().clear();
}
//是否为空
public boolean isEmpty(){
if(stack.getTop()==-1)return true;
return false;
}
public static void main(String[] args) {
StackByArray<String> stack=new StackByArray<String>();
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
System.out.println(stack.size());
while(!stack.isEmpty()){
String v=stack.pop();
System.out.print(v+" ");
}
}
}