定义一个IntStack类,它主要实现int基本数据类型的栈功能: (1)无参构造函数,默认栈的深度为16 (2)有参构造函数,栈的深度通过参数指定。当参数为负数或零时,抛出java.lang包中已有的异常IllegalArgumentException异常。 (3)isEmpty方法和isFull方法,返回值都是boolean.这两个方法用于判断栈是否为空和判断栈是否为满。 (4)pop方法:栈不为空时,实现弹栈功能;栈空时,抛出EmptyStackException异常 (5)push方法:当栈不满时,实现压栈功能;栈满时,抛出FullStackException异常 (6) peek函数:栈不为空时,返回栈顶元素值;栈为空时,抛出EmptyStackException异常。
时间: 2024-03-25 16:40:42 浏览: 44
数据结构: 栈和队列
好的,以下是IntStack类的实现代码:
```java
import java.util.EmptyStackException;
public class IntStack {
private int[] stack;
private int top;
private int size;
// 无参构造函数,默认深度为16
public IntStack() {
size = 16;
stack = new int[size];
top = -1;
}
// 有参构造函数,深度由参数指定
public IntStack(int size) {
if (size <= 0) {
throw new IllegalArgumentException("栈的深度必须为正整数!");
}
this.size = size;
stack = new int[size];
top = -1;
}
// 判断栈是否为空
public boolean isEmpty() {
return top == -1;
}
// 判断栈是否为满
public boolean isFull() {
return top == size - 1;
}
// 弹栈
public int pop() {
if (isEmpty()) {
throw new EmptyStackException();
}
int element = stack[top];
top--;
return element;
}
// 压栈
public void push(int element) {
if (isFull()) {
throw new FullStackException();
}
top++;
stack[top] = element;
}
// 返回栈顶元素
public int peek() {
if (isEmpty()) {
throw new EmptyStackException();
}
return stack[top];
}
}
```
其中,FullStackException是自定义的栈满异常类,实现代码如下:
```java
public class FullStackException extends RuntimeException {
public FullStackException() {
super("栈已满!");
}
}
```
这样,你就可以使用IntStack类来实现int类型的栈功能啦!
阅读全文