设计一个算法利用栈的基本运算将一个整数链栈中所有元素逆置。例如链栈st中元素从栈底到栈顶为(1,2,3,4),逆置后为(4,3,2,1)。用java代码实现
时间: 2024-12-06 09:25:29 浏览: 11
要设计一个算法,我们可以通过迭代的方式来实现链栈元素的逆置。首先创建两个指针,一个指向栈底(`null`),另一个指向当前元素。然后,我们将当前元素入栈(`push`),并将当前指针移动到下一个元素,直到遍历完整个链栈。最后,原栈(`st`)的栈顶元素就变成了新的栈底。
以下是Java代码实现:
```java
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public class StackInvert {
public ListNode invertStack(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
// 将当前节点压入新栈
ListNode temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}
// 返回新的栈顶元素
return prev;
}
public static void main(String[] args) {
ListNode st = new ListNode(1);
st.next = new ListNode(2);
st.next.next = new ListNode(3);
st.next.next.next = new ListNode(4);
// 创建一个StackInvert实例
StackInvert inversion = new StackInvert();
st = inversion.invertStack(st);
// 打印逆置后的链栈
while (st != null) {
System.out.print(st.val + " ");
st = st.next;
}
阅读全文