实现栈_基于数组
2019-04-15 本文已影响0人
苏州城外无故人
基于动态数组实现栈
声明栈的接口
package com.company.stack;
public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peek();
}
实现类及测试
package com.company.stack;
import com.company.Array;
/**
* @program: Array
* @description: 动态数组实现栈
* @author: Gu
* @create: 2019-04-14 19:58
**/
public class ArrayStack<E> implements Stack<E>{
private Array<E> array;
private ArrayStack() {
array = new Array<>();
}
private ArrayStack(int capacity) {
array = new Array<>(capacity);
}
public int getCapacity() {
return array.length();
}
@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() {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(String.format("栈的size:%d, capaticy: %d \n", getSize(), getCapacity()));
stringBuffer.append("[");
for (int i = 0; i < getSize(); i++) {
stringBuffer.append(array.get(i));
if (i == getSize() - 1) {
stringBuffer.append("] top");
break;
}
stringBuffer.append(",");
}
return stringBuffer.toString();
}
public static void main(String[] args) {
ArrayStack<Integer> arrayStack = new ArrayStack<>();
for (int i = 0; i < 10; i++) {
arrayStack.push(i);
}
System.out.println(arrayStack.toString());
System.out.println(arrayStack.pop());
System.out.println(arrayStack.peek());
}
}