java堆栈push pop peek
三张图理解push pop peek的功能,就不文字解释了
实现(以数组为例)
定义数组栈
class ArrayStack{
private String[] stack;
private int top;
public ArrayStack(int langth){
this.stack=new String[langth];
}
}
- push
public void push(String value){
if(top==stack.length){
String[] newstack=new String[2 * stack.length];
System.arraycopy(stack, 0, newstack, 0, stack.length);
stack=newstack;
}
stack[top++]=value;
}
- pop
我这里是String数组,所以单个元素就是string,这里返回的就是string。你是其它类型数组的话就返回你自己的类型。
public String pop(){
if(top!=0){
String res=stack[--top];
stack[top]=null;
return res;
}
return null;
}
- peek
我这里是String数组,所以单个元素就是string,这里返回的就是string。你是其它类型数组的话就返回你自己的类型。
public String peek(){
if(top!=0){
String res=stack[top-1];
return res;
}
return null;
}
番外篇
基于自制单链表实现的堆栈,自制链表详情
实现
class LinklistStack{
private LinkList stack;
private int top=0;
public LinklistStack(){
this.stack=new LinkList();
}
public void push(Node node){
this.stack.add(node);
this.top++;
}
public Node pop(){
Node res=this.stack.get(this.top-1);
this.stack.deletefirst();
this.top--;
return res;
}
public Node peek(){
Node res=this.stack.get(this.top-1);
return res;
}
public void printStack(){
this.stack.printList();
}
}