定义一个IntStack类,它主要实现int基本数据类型的栈功能: (1)无参构造函数,默认栈的深度为16 (2)有参构造函数,栈的深度通过参数指定。当参数为负数或零时,抛出java.lang包中已有的异常IllegalArgumentException异常。 (3)isEmpty方法和isFull方法,返回值都是boolean.这两个方法用于判断栈是否为空和判断栈是否为满。 (4)pop方法:栈不为空时,实现弹栈功能;栈空时,抛出EmptyStackException异常 (5)push方法:当栈不满时,实现压栈功能;栈满时,抛出FullStackException异常 (6) peek函数:栈不为空时,返回栈顶元素值;栈为空时,抛出EmptyStackException异常。
时间: 2024-03-25 13:36:24 浏览: 42
好的,下面是IntStack类的实现代码,注意其中的注释:
```java
import java.util.EmptyStackException;
public class IntStack {
private int[] stack; // 存储栈元素的数组
private int top; // 栈顶元素下标
private int size; // 栈的深度
// 无参构造函数,默认栈的深度为16
public IntStack() {
this(16);
}
// 有参构造函数,栈的深度通过参数指定
public IntStack(int size) {
if (size <= 0) { // 当参数为负数或零时,抛出IllegalArgumentException异常
throw new IllegalArgumentException("Stack size must be positive");
}
this.size = size;
stack = new int[size];
top = -1; // 初始化栈顶元素下标为-1,表示栈为空
}
// isEmpty方法,判断栈是否为空
public boolean isEmpty() {
return top == -1; // 栈顶元素下标为-1表示栈为空
}
// isFull方法,判断栈是否为满
public boolean isFull() {
return top == size - 1; // 栈顶元素下标为size-1表示栈为满
}
// pop方法,弹栈
public int pop() {
if (isEmpty()) { // 栈为空时,抛出EmptyStackException异常
throw new EmptyStackException();
}
int value = stack[top]; // 取出栈顶元素
top--; // 栈顶元素下标减一
return value;
}
// push方法,压栈
public void push(int value) {
if (isFull()) { // 栈满时,抛出FullStackException异常
throw new FullStackException();
}
top++; // 栈顶元素下标加一
stack[top] = value; // 将元素压入栈顶
}
// peek方法,返回栈顶元素值
public int peek() {
if (isEmpty()) { // 栈为空时,抛出EmptyStackException异常
throw new EmptyStackException();
}
return stack[top]; // 返回栈顶元素值
}
}
```
需要注意的是,FullStackException异常需要自己定义,可以继承java.util包中的RuntimeException。
阅读全文