gpt4 book ai didi

java - LinkedStack 并显示整个堆栈

转载 作者:行者123 更新时间:2023-11-30 01:55:19 25 4
gpt4 key购买 nike

我在这些问题上遇到了困难。我有 4 个问题要让它工作。我的其中两个是正确的,但另外两个是错误的。它是 java 的 toString():

    LLNode<T> node = top;
StringBuilder s = new StringBuilder();
String es = "Empty Stack";

if (node == null)
{
return es;
}
s.append("bottom|");
while (node != null)
{
s.append(node.getInfo());
s.append("|");
node = node.getLink();

}
s.append("top");
return s.toString();
}

它返回:

bottom|3|4|5|top 而不是 bottom|5|4|3|top

我的另一个错误是它返回:

bottom|5|4|3|2|1|top 而不是 bottom|1|2|3|4|5|top

如果有人知道如何做到这一点,那就太好了。我被困在它上面,我不知道为什么它没有返回我想要的东西。

这就是它想要的

@Test  
public void test_toString_on_a_stack_with_multiple_elements() {

stk1.push(5); stk1.push(4); stk1.push(3);

Assert.assertEquals("bottom|5|4|3|top", stk1.toString());
}

@Test
public void test_toString_on_a_full_stack() {

stk1.push(1); stk1.push(2); stk1.push(3); stk1.push(4); stk1.push(5);

Assert.assertEquals("bottom|1|2|3|4|5|top", stk1.toString());
}

最佳答案

根据您的发帖,元素的打印顺序是错误的。因此一种解决方案是在 StringBuilder 前面添加而不是附加。由于索引 0 让生活更轻松,我还移动了“bootom|”收集所有节点并将其添加到缓冲区中所有节点输出之前:

LLNode<T> node = top;
StringBuilder s = new StringBuilder();
String es = "Empty Stack";

if (node == null)
{
return es;
}
while (node != null)
{
s.insert(0, "|");
s.insert(0, node.getInfo());
node = node.getLink();

}
s.insert(0,"bottom|");
s.append("top");
return s.toString();
}

(这是未经测试的,是我凭空写的,因为我没有你的 LLNode 或任何东西 - 所以尽力而为)

关于java - LinkedStack 并显示整个堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54719337/

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