实现栈
栈的特点是先进后出(FILO),我们之前实现了数组,具体在
https://www.cnblogs.com/skychmz/p/11968449.html
现在我们可以利用这个数组类来实现栈。
首先我们新建一个栈的原型,具有基本的方法和变量
public class ArrayStack<E> { private Array<E> array; public ArrayStack(int capacity){ array = new Array<>(capacity); } public ArrayStack(){ array = new Array<>(); } public int getSize(){ return array.getSize(); } public boolean isEmpty(){ return array.isEmpty(); } public int getCapacity(){ return array.getCapacity(); } }
然后我们实现操作栈元素的方法
由于栈先进后出的特性,我们只能往栈顶(数组尾部)加入元素,也就是push方法,通过数组的addLast方法实现
public void push(E e){ array.addLast(e); }
取元素也一样,只能从栈顶(数组尾部)取出元素,也就是pop方法,通过数组的removeLast方法实现
public E pop(){ return array.removeLast(); }
最后实现查看栈顶元素的方法
public E peek(){ return array.get(getSize() - 1); }
用链表实现栈
在https://www.cnblogs.com/skychmz/p/11979346.html中我们实现了链表结构,我们可以用链表来实现栈,只需要简单的复用即可实现
public class LinkedListStack<E>{ private LinkedList<E> list; public LinkedListStack(){ list = new LinkedList<>(); } public int getSize(){ return list.getSize(); } public boolean isEmpty(){ return list.isEmpty(); } public void push(E e){ list.addFirst(e); } public E pop(){ return list.removeFirst(); } public E peek(){ return list.getFirst(); } }