数组实现
import java.util.Arrays;
class MyStack<T> {
private Object[] stack;
private int top;
MyStack(){
stack = new Object[10];
}
public boolean isEmpty(){
return top==0;
}
public void push(T t){
expandCapacity(top+1);
stack[top] = t;
top++;
}
public T peek(){
T t = null;
if (top>0){
t = (T)stack[top-1];
}
return t;
}
public T pop(){
T t = peek();
if (top>0){
stack[top-1] = null;
top--;
}
return t;
}
private void expandCapacity(int size) {
int len = stack.length;
if (size>len){
size = size*3/2+1;
stack = Arrays.copyOf(stack,size);
}
}
}
链表实现
class ListStack<T>{
class Node<T>{
public T t;
public Node next;
}
public Node<T> head;
ListStack(){
head = null;
}
public void push(T t){
if (t==null){
throw new NullPointerException("参数不能为空");
}
if (head==null){
head = new Node<T>();
head.t = t;
head.next = null;
}else {
Node<T> temp = head;
head = new Node<>();
head.t = t;
head.next= temp;
}
}
public T pop(){
if (head==null){
return null;
}
T t = head.t;
head = head.next;
return t;
}
public T peek(){
if (head == null){
return null;
}
T t = head.t;
return t;
}
public boolean isEmpty(){
if (head ==null){
return true;
}else {
return false;
}
}
}