栈
- 先入后出(FILO)的有序列表。
- 限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。
![栈示意图](https://i-blog.csdnimg.cn/direct/06870828d2ce4ea5aae0796dbad11f6b.png)
代码实现
package org.example.data.structure.stack;
public class ArrayStack {
private int[] content;
private int size;
private int top;
public ArrayStack(int size) {
content = new int[size];
this.size = size;
top = -1;
}
public boolean isEmpty() {
return top == -1;
}
public boolean isFull() {
return top == (size - 1);
}
public boolean push(int data) {
if (isFull()) {
System.out.println("栈已满");
return false;
}
top++;
content[top] = data;
return true;
}
public int pop() {
if (isEmpty()) {
System.out.println("栈内元素为空, 返回默认值-1");
return -1;
}
int result = content[top];
top--;
return result;
}
public int[] list() {
if (isEmpty()) {
return new int[0];
}
int[] result = new int[top + 1];
for (int i = 0, j = top; i <= top; i++, j--) {
result[i] = content[j];
}
return result;
}
}
源码与测试案例
gitee地址