public class StackArray implements Stack {
private final int LEN = 4; //数组的默认大小
private Object[] elements; //数据元素数组
private int top; //栈顶指针
public StackArray() {
top = -1;
elements = new Object[LEN];
}
//返回堆栈的大小
public int getSize() {
return top+1;
}
//判断堆栈是否为空
public boolean isEmpty() {
return top<0;
}
//数据元素e入栈
public void push(Object e) {
if (getSize()>=elements.length) expandSpace();
elements[++top] = e;
}
private void expandSpace(){
Object[] a = new Object[elements.length*2];
for (int i=0; i<elements.length; i++)
a[i] = elements[i];
elements = a;
}
//栈顶元素出栈
public Object pop() throws StackEmptyException {
if (getSize()<1)
throw new StackEmptyException("错误,堆栈为空。");
Object obj = elements[top];
elements[top--] = null;
return obj;
}
//取栈顶元素
public Object peek() throws StackEmptyException {
if (getSize()<1)
throw new StackEmptyException("错误,堆栈为空。");
return elements[top];
}
}
分享到:
相关推荐
将以上操作封装到一个类中,可以创建一个简单的栈实现: ```cpp #define MAX_SIZE 10 class Stack { private: int stackArray[MAX_SIZE]; int top; public: Stack() : top(-1) {} void push(int value...
- **类定义**:`public class StackS` 定义了一个名为 `StackS` 的类,用于实现栈的功能。 - **成员变量**: - `private int maxSize;`:定义了栈的最大容量。 - `private long[] stackArray;`:存储栈内元素的...
在上面的代码中,我们定义了一个名为 `StackX` 的栈类,该类有四个方法:`push` 用于将元素压入栈中,`pop` 用于从栈中弹出元素,`peek` 用于查看栈顶元素,`isEmpty` 用于判断栈是否为空。 现在,让我们来看一个...
- **适配器模式**:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 6. **JAVA基础**: - Java基础包括类、对象、封装、继承、多态等面向对象特性,异常...
5. **转换为数组:** `ToArray`方法可以将栈转换为一个数组。 ```csharp int[] stackArray = myStack.ToArray(); ``` 6. **容量与大小:** `Capacity`属性表示栈的当前容量,`Size`属性(等同于`Count`)表示栈...
Java标准库还提供了一个名为`java.util.Stack`的类,它是Vector类的一个子类,可以直接用于创建堆栈。这个类提供了所有必要的堆栈操作,如`push()`, `pop()`, `peek()`, 和 `empty()`等。使用内置的Stack类可以简化...
以下是一个简单的静态栈类的实现: ```java public class StaticStack { private int maxSize; private int top; private int[] stackArray; public StaticStack(int size) { maxSize = size; top = -1; ...
在这个实现中,`Stack`类包含了一个整数数组`stackArray`、栈顶索引`top`和栈底索引`bottom`。初始化时,栈顶索引设为-1,表示空栈。当进行压栈操作时,如果栈未满,`top`值会递增,并将新元素存入`stackArray[top]`...
在一个类的构造方法中,如果要调用该类中的另一个构造方法,必须使用`this()`,同样地,这个调用语句也必须放在构造方法的第一行。 #### 二、作用域public, protected, private,以及不写时的区别? - **public**:...
1. **Push**: 将一个元素压入栈顶。这是将新元素添加到栈中的主要方式。 ```csharp Stack<int> myStack = new Stack(); myStack.Push(1); ``` 2. **Pop**: 弹出并返回栈顶的元素。这会移除并返回最近被压入的...
首先,我们需要定义一个栈的数据结构,通常使用一个字符数组和一个指针(top)来表示栈顶。Java中的一个简单栈实现如下: ```java public class StackX { private int top; private char[] stackArray; private ...