1.通过数组实现栈
import java.util.Arrays;
public class stack<E> {
private int size=0;
private Object[] stack;
public stack() {
stack = new Object[10];
}
//判断栈是否为空
public Boolean isEmpety() {
return size==0;
}
//查看栈顶元素
public E peek() {
if(isEmpety()) {
return null;
}
E e = (E)stack[size-1];
return e;
}
//弹出栈顶元素
public E pop() {
E e = peek();
stack[size-1] = null;
size--;
return e;
}
//把数据压栈
public E push(E e) {
//判断空间是否够用
curr(size+1);
stack[size++] = e;
return e;
}
//扩容方法,判断数组空间是否够用
public void curr(int max) {
if(max>stack.length) {
stack = Arrays.copyOf(stack, 10);
}
}
}
2.通过链表实现栈
创建简单的节点元素
public class Node<E> {
E e;
Node nextNode=null;
public Node(E e) {
this.e = e;
}
}
创建利用链表结构创建一个栈
public class listStack<E> {
Node<E> topNode = null;
//判断栈是否为空
public Boolean isEmtpy() {
return topNode==null;
}
//出栈
public E pop() {
if(isEmtpy()) {
return null;
}
E e = topNode.e;
topNode = topNode.nextNode;
return e;
}
//入栈
public E push(E e) {
Node<E> node = new Node<E>(e);
node.nextNode = topNode;
topNode = node;
return e;
}
获取栈顶元素
public E peek() {
return topNode.e;
}
}
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。