定义一个IntStack类,它主要实现int基本数据类型的栈功能: (1)无参构造函数,默认栈的深度为16 (2)有参构造函数,栈的深度通过参数指定。当参数为负数或零时,抛出java.lang包中已有的异常IllegalArgumentException异常。 (3)isEmpty方法和isFull方法,返回值都是boolean.这两个方法用于判断栈是否为空和判断栈是否为满。 (4)pop方法:栈不为空时,实现弹栈功能;栈空时,抛出EmptyStackException异常 (5)push方法:当栈不满时,实现压栈功能;栈满时,抛出FullStackException异常 (6) peek函数:栈不为空时,返回栈顶元素值;栈为空时,抛出EmptyStackException异常。
时间: 2024-03-25 10:38:28 浏览: 16
好的,根据您的要求,这里给出一个IntStack类的实现,具体实现代码如下:
```java
import java.util.EmptyStackException;
public class IntStack {
private int depth;
private int[] stack;
private int top;
public IntStack() {
this(16);
}
public IntStack(int depth) {
if (depth <= 0) {
throw new IllegalArgumentException("The depth of the stack must be positive!");
}
this.depth = depth;
this.stack = new int[depth];
this.top = -1;
}
public boolean isEmpty() {
return top == -1;
}
public boolean isFull() {
return top == depth - 1;
}
public int pop() {
if (isEmpty()) {
throw new EmptyStackException();
}
return stack[top--];
}
public void push(int value) {
if (isFull()) {
throw new RuntimeException("The stack is full!");
}
stack[++top] = value;
}
public int peek() {
if (isEmpty()) {
throw new EmptyStackException();
}
return stack[top];
}
}
```
这个IntStack类有两个构造函数,一个是无参构造函数,栈的深度默认为16;另一个是有参构造函数,栈的深度通过参数指定,如果参数为负数或零,则抛出IllegalArgumentException异常。
这个类还有三个方法:isEmpty方法和isFull方法用于判断栈是否为空和是否为满,返回值都是boolean;pop方法和push方法分别实现弹栈和压栈功能,当栈空时,pop方法和peek方法抛出EmptyStackException异常,当栈满时,push方法抛出RuntimeException异常;peek方法返回栈顶元素值,当栈为空时,抛出EmptyStackException异常。