🎄java实现·接口定义
public interface Stack<E> {
/**
* 向栈顶压入元素
*
* @param value 待压入值
* @return 压入成功返回 true, 否则返回 false
*/
boolean push(E value);
/**
* 从栈顶弹出元素
*
* @return 栈非空返回栈顶元素, 栈为空返回 null
*/
E pop();
/**
* 返回栈顶元素, 不弹出
*
* @return 栈非空返回栈顶元素, 栈为空返回 null
*/
E peek();
/**
* 判断栈是否为空
*
* @return 空返回 true, 否则返回 false
*/
boolean isEmpty();
/**
* 判断栈是否已满
*
* @return 满返回 true, 否则返回 false
*/
boolean isFull();
}
🎄java实现·使用数组实现
package bigbigmeng.datastructures.stack;
/**
@author Liu Xianmeng
@createTime 2023/10/3 21:12
@instruction
*/
@SuppressWarnings({"all"})
public class ArrayStack<E> implements Stack<E> {
private final E data[]; // 存储数据的数组
private int top; // 指向栈顶的指针
private int capacity; // 容量
/**
* 构造函数传入栈的容量大小
* @param capacity
*/
public ArrayStack(int capacity){
this.capacity = capacity;
// 注意泛型不能直接被初始化 所以这里要先创建一个Object类型的数组
// 然后对其强制类型转换
data = (E[]) new Object[capacity];
this.top = 0;
}
@Override
public boolean push(E value) {
// 如果容量已满则返回false
if(top == capacity) return false;
// 容量未满 执行压栈操作 返回true
data[top++] = value;
return true;
}
@Override
public E pop() {
// 如果栈为空 则直接返回null
if(top == 0) return null;
// 不为空 则弹出栈顶元素并返回
return data[--top];
}
@Override
public E peek() {
if(top == 0) return null;
return data[top - 1];
}
@Override
public boolean isEmpty() {
if(top == 0) return true;
return false;
}
@Override
public boolean isFull() {
if(top == capacity) return true;
return false;
}
@Override
public int getSize() {
return top;
}
}
⚡测试
package bigbigmeng.datastructures.stack;
/**
@author Liu Xianmeng
@createTime 2023/10/3 21:33
@instruction
*/
@SuppressWarnings({"all"})
public class Test {
public static void main(String[] args) {
ArrayStack<Integer> stack = new ArrayStack<>(5);
System.out.println("C Test M main() -> size = " + stack.getSize());
stack.push(25);
stack.push(56);
stack.push(12);
stack.push(89);
System.out.println("C Test M main() -> pop = " + stack.pop());
System.out.println("C Test M main() -> size = " + stack.getSize());
/**
* C Test M main() -> size = 0
* C Test M main() -> pop = 89
* C Test M main() -> size = 3
*/
}
}
🎄java实现·使用链表实现