定义上层接口
package org.example.datastructure.stack;
public interface Stack<T> {
/**
* 向栈顶压入元素
*
* @return
*/
boolean push(T value);
/**
* 从栈顶弹出元素 (弹出————删除)
* 栈为空返回null
*
* @return
*/
T pop();
/**
* 返回栈顶元素,不弹出 (不弹出————不删除)
* 栈为空返回null
*
* @return
*/
T peek();
/**
* 判断栈是否为空
*
* @return
*/
boolean isEmpty();
/**
* 判断栈是否已满
*
* @return
*/
boolean isFull();
}
接口实现类基础版
package org.example.datastructure.stack;
import org.example.datastructure.dynamicarray.DynamicArray;
import java.util.Iterator;
public class ArrayStack<T> implements Stack<T>, Iterable<T> {
private DynamicArray<T> array; //数组
private int top; //栈顶指针
// 栈底0 1 2 3 4 5 6栈顶
public ArrayStack() {
this.array = new DynamicArray();
}
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
int p = top;
@Override
public boolean hasNext() {
return p > 0;
}
@Override
public T next() {
return array.get(--p);
}
};
}
@Override
public boolean push(T value) {
if (isFull()) {
return false;
}
array.add(value);
top++;
return true;
}
@Override
public T pop() {
if (isEmpty()) {
return null;
}
return array.remove(--top);
}
@Override
public T peek() {
if (isEmpty()) {
return null;
}
return array.get(top - 1);
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public boolean isFull() {
return false;
}
}