栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈
链表栈
public class Zhan1 {
private class Node{
private Object item;
Node next;
public Node(Object item) {
this.item=item;
}
}
private Node first=null;
public boolean isempty() {
return first==null;
}
public void push(Object item) {
Node oldfirst=first;
first=new Node(item);
first.next=oldfirst;
}
public Object pop() {
Object item=first.item;
first=first.next;
return item;
}
}
数组栈
public class FixedCapacityStackOfString {
private String[] s;
private int N=0;//N表示栈顶元素的下一个元素的下标
public FixedCapacityStackOfString(int capacity){//根据传入的capacity确定字符串数组的长度
s=new String[capacity];
}
public boolean isEmpty(){
return N==0;//如果N等于0,即栈顶元素的下一个元素为0,则栈为空
}
public void push(String item){//入栈
s[N++]=item;//注意!!这里的意思是,先给数组s的N下标位置赋值,然后N=N+1
}
public String pop(){
String item=s[--N];//注意!!这里的意思是,先N=N-1,然后给数组s的N下标位置的字符串拷贝下来
s[N]=null;//令栈顶元素的下一个元素为null,即使得垃圾回收器可以回收这部分空间
return item;//返回拷贝的字符串
}
}