package Stack; /** * 栈的定义:限定只在表末尾进行增加和删除操作的线性表 * 栈的特点:先进后出FILO(First In Last Out) * 通常我们把允许插入和删除的一段称为栈顶(top),另一端 * 称为栈底,不包含任何元素的栈称为空栈 * 栈的出栈操作我们一般称为进栈或者压栈或者入栈 * 栈的删除操作我们一般称为出栈或者弹栈 * * 这里我们用数组来实现栈的顺序存储结构及各种操作 * @author wl * */ public class MyStack { private int[] array;//用来存放栈的元素 private int top;//栈顶指针 /** * 默认构造函数,用于初始化栈,这里我们 * 将栈的大小默认初始化为10 */ public MyStack(){ array=new int[10]; top=-1; } /** * 自定义构造函数,可以用于指定栈的初始化 * 空间大小 */ public MyStack(int capacity){ array=new int[capacity]; top=-1; } /* * 压栈操作 */ public void push(int value){ if(isFull()){//栈满 throw new RuntimeException("栈已满,元素'"+value+"'压栈不成功"); } array[++top]=value; } public int peek(){ if(isEmpty()){//如果栈为空 throw new RuntimeException("栈中元素为空"); } return array[top]; } /** * 出栈操作 * @return */ public int pop(){ if(isEmpty()){//如果栈为空 throw new RuntimeException("栈中元素为空"); } return array[top--]; } /** * 判断栈是否为空 * @return */ public boolean isEmpty(){ return top==-1; } /** * 判断栈是否满了 */ public boolean isFull(){ return top==array.length-1; } }
时间: 2024-10-04 12:40:05