· 采用数组实现栈的方法
class ListStack <E>
{
// 数组实现栈
private Object[] stack;
private int size;
public ListStack(int len)
{
stack = new Object[len]; // 初始长度为len
}
// 判断堆栈是否为空
private boolean isEmpty()
{
return size == 0;
}
private E peek()
{
if (isEmpty())
{
return null;
}
return (E) stack[size - 1];
}
private E pop()
{
E e = peek();
stack[size - 1] = null;
size--;
return e;
}
private void push(E data)
{
ensureCapacity(size + 1); // 检查容量
stack[size++] = data;
return data;
}
private void ensureCapacity(int size)
{
int len = stack.length;
if (size > len)
{
int newLen = 10; // 每次扩充的容量
stack = Arrays.copyOf(stack, len + newlLen);
}
}
}
· 采用链表实现栈的方法
class NodeStack<E>
{
Node <E> top = null;
public boolean isEmpty()
{
return null == top;
}
private void push(E data)
{
Node <E> newNode = new Node<>(data);
newNode = top.next;
top = newNode;
}
private E peek()
{
if (isEmpty())
{
return null;
}
return top.data;
}
private E pop()
{
if (isEmpty())
{
return null;
}
E data = top.data;
top = top.next;
return data;
}
class Node <E>
{
Node <E> next = null;
E data;
public Node(E data)
{
this.data = data;
}
}
}