定义一个IntStack类,它主要实现int基本数据类型的栈功能: (1)无参构造函数,默认栈的深度为16 (2)有参构造函数,栈的深度通过参数指定。当参数为负数或零时,抛出java.lang包中已有的异常IllegalArgumentException异常。 (3)isEmpty方法和isFull方法,返回值都是boolean.这两个方法用于判断栈是否为空和判断栈是否为满。 (4)pop方法:栈不为空时,实现弹栈功能;栈空时,抛出EmptyStackException异常 (5)push方法:当栈不满时,实现压栈功能;栈满时,抛出FullStackException异常 (6) peek函数:栈不为空时,返回栈顶元素值;栈为空时,抛出EmptyStackException异常。
时间: 2024-03-25 12:38:32 浏览: 121
c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈.pdf
以下是IntStack类的实现:
```java
import java.util.EmptyStackException;
public class IntStack {
private int[] stackArray;
private int top;
private int size;
// 无参构造函数,默认栈的深度为16
public IntStack() {
stackArray = new int[16];
top = -1;
size = 16;
}
// 有参构造函数,栈的深度通过参数指定
public IntStack(int size) {
if (size <= 0) {
throw new IllegalArgumentException("栈的大小必须是正整数!");
}
stackArray = new int[size];
top = -1;
this.size = size;
}
// 判断栈是否为空
public boolean isEmpty() {
return top == -1;
}
// 判断栈是否为满
public boolean isFull() {
return top == size - 1;
}
// 弹栈
public int pop() {
if (isEmpty()) {
throw new EmptyStackException();
}
int value = stackArray[top];
top--;
return value;
}
// 压栈
public void push(int value) {
if (isFull()) {
throw new FullStackException();
}
top++;
stackArray[top] = value;
}
// 返回栈顶元素值
public int peek() {
if (isEmpty()) {
throw new EmptyStackException();
}
return stackArray[top];
}
}
```
其中,FullStackException类需要自己定义,可以继承java.lang包中的RuntimeException类:
```java
public class FullStackException extends RuntimeException {
public FullStackException() {
super("栈已满!");
}
}
```
阅读全文