在 Java 中实现链式栈,可以通过定义一个节点类来表示栈的元素,并使用该节点类构建一个链表来实现栈的功能。
首先,创建一个节点类,包含一个数据域和一个指针域,表示节点的数据和下一个节点的引用:
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
然后,创建一个链式栈类,包含一个头节点和一个栈的大小:
class LinkedStack {
Node top;
int size;
public LinkedStack() {
this.top = null;
this.size = 0;
}
}
链式栈的基本操作包括判断栈是否为空、获取栈的大小、入栈、出栈等。下面是这些操作的具体实现:
1. 判断栈是否为空:
public boolean isEmpty() {
return top == null;
}
2. 获取栈的大小:
public int size() {
return size;
}
3. 入栈:
public void push(int data) {
Node newNode = new Node(data);
if (isEmpty()) {
top = newNode;
} else {
newNode.next = top;
top = newNode;
}
size++;
}
4. 出栈:
public int pop() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
int data = top.data;
top = top.next;
size--;
return data;
}
现在可以使用链式栈类来进行栈的操作了。例如,创建一个链式栈对象,并入栈、出栈一些元素:
LinkedStack stack = new LinkedStack();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack.pop()); // 输出:3
System.out.println(stack.pop()); // 输出:2