目录
一、栈
1、栈的基本介绍
栈是⼀个先⼊后出的有序列表。栈(stack)是限制线性表中元素的插⼊和删除只能在线性表的同⼀端进⾏的⼀种特殊线性表。允许插⼊和删除的⼀端,为变化的⼀端,称为栈顶(Top),另⼀端为固定的⼀端,称为栈底(Bottom)。
根据栈的定义可知,最先放⼊栈中元素在栈底,最后放⼊的元素在栈顶,⽽删除元素刚好相反,最后放⼊的元素最先删除,最先放⼊的元素最后删除。
2、栈的底层实现
▶ (1)创建一个类,模拟栈
maxSize :栈的最大容量
top :表示栈顶
stack :数组用来存储数据
public class Stacks { public int maxSize; public int top ; public int[] stack; //构造器,传入栈的最大容量 public Stacks(int maxSize) { this.maxSize = maxSize; //初始化栈顶的位置为-1,栈空 top = -1; //初始化数组,最大容量为栈的容量 stack = new int[maxSize]; } }
▶ (2)判断栈空和栈满
▷ 栈满
//因为底层是数组存储数据,所以索引从0开始, //判断条件为 top == maxSize - 1 public boolean isFull(){ return top == maxSize - 1; }
▷ 栈空
public boolean isEmpty(){ return top == -1; }
▶ (3)入栈操作
首先判断是否栈满,栈满后则不能继续添加,先对栈顶进行加一,然后再放入数据。
public void push(int data){ //判断是否栈满 if (isFull()){ System.out.println("栈满,无法入栈"); return; } top++; stack[top] = data; }
▶ (4)出栈操作
首先判断栈空,出栈操作其实就是将top减一即可,return stack[top--]; 这样操作是为了让我们知道出栈的数据是什么。
public int pop(){ if (isEmpty()){ throw new RuntimeException("栈空,无法出栈!"); } //先出栈,后减减 return stack[top--]; }
</