JAVA 没有栈 的top 方法
时间: 2023-11-28 09:48:56 浏览: 22
Java 中的 Stack 类确实没有 top 方法,但是它继承了 Vector 类,因此可以使用 Vector 中的 lastElement() 方法来获取栈顶元素。示例代码如下:
```java
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack.lastElement()); // 输出 3
```
需要注意的是,lastElement() 方法返回的是栈顶元素,并不会将其从栈中弹出。如果需要弹出栈顶元素,应该使用 Stack 类中的 pop() 方法。
相关问题
Java链式栈逆置
实现Java链式栈逆置可以通过以下步骤:
1. 定义一个链式栈类,包括节点类和栈类。
2. 创建一个新的空栈,用于存放逆置后的元素。
3. 依次从原栈中弹出元素,并将其压入新栈中。
4. 最后返回新栈作为逆置后的结果。
下面是Java链式栈逆置的示例代码:
```java
public class Node {
private int data;
private Node next;
public Node(int data) {
this.data = data;
}
public int getData() {
return data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
public class LinkedStack {
private Node top;
public LinkedStack() {
top = null;
}
public boolean isEmpty() {
return top == null;
}
public void push(int data) {
Node newNode = new Node(data);
newNode.setNext(top);
top = newNode;
}
public int pop() {
int data = top.getData();
top = top.getNext();
return data;
}
public int peek() {
return top.getData();
}
public LinkedStack reverse() {
LinkedStack reversedStack = new LinkedStack();
while (!isEmpty()) {
reversedStack.push(pop());
}
return reversedStack;
}
}
public class Main {
public static void main(String[] args) {
LinkedStack stack = new LinkedStack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
LinkedStack reversedStack = stack.reverse();
while (!reversedStack.isEmpty()) {
System.out.println(reversedStack.pop());
}
}
}
```
上述代码中,我们定义了一个链式栈类 LinkedStack,包括节点类 Node 和栈类 LinkedStack。其中 reverse() 方法实现了栈的逆置,返回一个新的逆置后的栈。在 main() 方法中,我们创建了一个栈,压入了四个元素,并将其逆置后输出。
java数据结构栈实现
Java中可以使用数组或链表来实现栈。以下是使用数组实现栈的一个简单示例代码:
```java
public class Stack {
private int maxSize; // 栈的最大容量
private int[] stackArray; // 存储栈元素的数组
private int top; // 栈顶指针
public Stack(int size) {
maxSize = size;
stackArray = new int[maxSize];
top = -1;
}
public void push(int value) {
if (isFull()) {
throw new RuntimeException("栈已满,无法入栈");
}
stackArray[++top] = value;
}
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈为空,无法出栈");
}
return stackArray[top--];
}
public int peek() {
if (isEmpty()) {
throw new RuntimeException("栈为空");
}
return stackArray[top];
}
public boolean isEmpty() {
return top == -1;
}
public boolean isFull() {
return top == maxSize - 1;
}
public int size() {
return top + 1;
}
}
```
以上代码是一个基本的栈的实现,其中包含了入栈(push)、出栈(pop)、获取栈顶元素(peek)、判断栈是否为空、判断栈是否已满和获取栈的长度等操作。