引言:数据结构——队列
ArrayStack
实现栈有两种方法,但这次我们使用Array来实现栈
由于有两个不同的实现,我们可以把Stack作为一个接口,两种方法分别实现它
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peak(); }
|
想一下有什么功能?

现在来实现ArrayList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| import array.Array;
import java.util.StringJoiner;
public class ArrayStack<E> implements Stack { Array<E> array;
public ArrayStack(int capacity) { array = new Array<>(capacity); }
public ArrayStack() { array = new Array<>(); }
public int getCapacity(){ return array.getCapacity(); }
@Override public int getSize() { return array.getSize(); }
@Override public boolean isEmpty() { return array.isEmpty(); }
@Override public void push(Object o) { array.addLast((E)o); }
@Override public E pop() { return array.removeLast(); }
@Override public E peak() { return array.get(array.getSize()); }
@Override public String toString() { StringJoiner sj = new StringJoiner(",","Stack: [","] top"); for(int i = 0 ; i < array.getSize() - 1 ; i++){ sj.add(array.get(i)+""); } return sj.toString(); } }
|
复杂度分析
1 2 3 4 5 6 7
| 方法名 | 时间复杂度 | ------------------------------------------------- push(E e) | O(1) | (均摊复杂度) pop() | O(1) | (均摊复杂度) peek() | O(1) | getSize() | O(1) | isEmpty() | O(1) |
|
参考资料
参考资料:
来自慕课liuyubobobo的教程