设计链式栈类,实现IStack接口。
时间: 2024-10-21 12:05:49 浏览: 24
istack-commons-runtime-3.0.7.jar
设计链式栈类通常会涉及到以下几个步骤:
首先,你需要创建一个类,比如`LinkedStack`,它将实现`IStack`接口。这个接口可能会包含一些基本操作,如`push()`(入栈)、`pop()`(出栈)、`peek()`(查看顶部元素而不删除)以及`isEmpty()`(检查栈是否为空)。
```java
// 定义IStack接口
public interface IStack<T> {
void push(T item);
T pop();
T peek();
boolean isEmpty();
}
// 实现链式栈类 LinkedStack
public class LinkedStack<T> implements IStack<T> {
private Node<T> top; // 栈顶节点
private int size; // 栈大小
// 链表节点结构
static class Node<T> {
T data;
Node<T> next;
Node(T data) {
this.data = data;
}
}
@Override
public void push(T item) {
Node<T> newNode = new Node<>(item);
if (top == null) {
top = newNode;
} else {
newNode.next = top;
top = newNode;
}
size++;
}
@Override
public T pop() {
if (isEmpty()) {
throw new EmptyStackException();
}
T item = top.data;
top = top.next;
size--;
return item;
}
@Override
public T peek() {
if (isEmpty()) {
throw new EmptyStackException();
}
return top.data;
}
@Override
public boolean isEmpty() {
return top == null;
}
// 其他可能的方法,如获取堆叠大小等...
}
```
在这个实现中,`push()`方法会添加新节点到链表顶部,`pop()`则移除并返回顶部节点,`peek()`则是查看但不移除顶部元素。如果试图从空栈中操作,会抛出`EmptyStackException`异常。
阅读全文