如果是链式,那么就无需考虑栈大小了,它可以通过堆内存,来进行动态的扩充栈大小,如果你清楚链表怎么写,那么这个也就信手拈来了,好了下面就是代码实现了
public class MyLinkedStack<T> {
private int top;
private Node<T> head;
public MyLinkedStack() {
this.head = new Node<>(null,null);
}
private class Node<T>{
private Node<T> next;
private T element;
public Node(Node<T> next, T element) {
this.next = next;
this.element = element;
}
@Override
public String toString() {
return String.valueOf(element);
}
}
//入栈
public void push(T element){
Node<T> next = head.next;
head.next = new Node<>(next,element);
top ++;
}
//出栈
public T pop(){
Node<T> next = head.next;
head.next = next.next;
top --;
return (T) next;
}
//peek
public T peek(){
return (T) head.next;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
for (Node<T> node = head.next; node != null ; node = node.next){
builder.append(node.element+",");
}
return builder.toString();
}
}
结果
9,8,7,6,5,4,3,2,1,0,
9
8
7,6,5,4,3,2,1,0,
7
7
7,6,5,4,3,2,1,0,