package stack;
/**
* @Title: Stack
* @ProjectName Demo03
* @date 2018/9/12
*/
public interface Stack {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peek();
}
package stack;
import array.Array;
/**
* @Title: ArrayStack
* @ProjectName Demo03
* @date 2018/9/12
*/
public class ArrayStack implements Stack {
private Array array;
public ArrayStack() {
array = new Array<>();
}
public ArrayStack(int capacity) {
array = new Array<>(capacity);
}
@Override
public int getSize() {
return array.getSize();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public void push(E e) {
array.addLast(e);
}
@Override
public E pop() {
return array.removeLast();
}
@Override
public E peek() {
return array.getLast();
}
@Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("Stack: [");
for (int i = 0; i < array.getSize(); i++) {
res.append(array.get(i));
if (i != array.getSize() - 1) {
res.append(",");
}
}
res.append("] top");
return res.toString();
}
public static void main(String[] args) {
ArrayStack arrayStack = new ArrayStack<>();
arrayStack.push("a");
arrayStack.push("b");
arrayStack.push("c");
System.out.println(arrayStack);
String pop = arrayStack.pop();
System.out.println(pop);
System.out.println(arrayStack);
System.out.println(arrayStack.peek());
}
}