gpt4 book ai didi

java - 谁能告诉我我做错了什么? - 堆栈

转载 作者:行者123 更新时间:2023-12-01 04:50:36 29 4
gpt4 key购买 nike

我需要编写一个方法,压缩以执行以下操作;

目标compress方法是从栈s1中移除所有null元素。剩余(非空)元素应按其初始顺序保留在 s1 上。辅助堆栈 s2 应用作s1 中元素的临时存储。在该方法的计算结束时,堆栈 s2 的内容应与计算开始时的内容相同。查看方法main 是 compress 方法的预期行为的示例。

到目前为止我已经;

import net.datastructures.ArrayStack;
import net.datastructures.Stack;

public class Stacks {

public static <E> void compress(Stack<E> S1, Stack<E> S2) {

int counter = 0;
while (!S1.isEmpty()) {

}
if (S1.top() == null) {
S1.pop();
} else if (S1.top() != null) {
S2.push(S1.pop());

counter++;
}

for (int i = counter; i < counter; i++) {

S2.push(S1.pop());
}
}

public static void main(String[] args) {
// test method compress
Stack<Integer> S1 = new ArrayStack<Integer>(10);
S1.push(2);
S1.push(null);
S1.push(null);
S1.push(4);
S1.push(6);
S1.push(null);

Stack<Integer> S2 = new ArrayStack<Integer>(10);
S2.push(7);
S2.push(9);

System.out.println("stack S1: " + S1);
// prints: "stack S1: [2, null, null, 4, 6, null]"

System.out.println("stack S2: " + S2);
// prints: "stack s2: [7, 9]"

compress(S1, S2);

System.out.println("stack S1: " + S1);
// should print: "stack S1: [2, 4, 6]"

System.out.println("stack S2: " + S2);
// should print: "stack S2: [7, 9]"
}

}

我不知道哪里出了问题,代码打印了 compress 方法之前的两行,然后什么也不打印。

最佳答案

while (!S1.isEmpty()) {

}

就在那里,你有一个无限循环。

关于java - 谁能告诉我我做错了什么? - 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045571/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com