创建自己的Stack底层使用数组来实现
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+" "); } } }