首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LinkedStack并显示整个堆栈

LinkedStack并显示整个堆栈
EN

Stack Overflow用户
提问于 2019-02-16 10:36:08
回答 2查看 41关注 0票数 1

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

代码语言:javascript
复制
    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

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

这就是它想要的

代码语言:javascript
复制
@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());
}   
EN

Stack Overflow用户

发布于 2019-02-16 21:20:34

使用kai的答案中的StringBuilder.insert可以使代码正确,但对于大型堆栈来说速度很慢。一种类似的方法是首先将元素存储在列表中,然后反转列表,最后从列表中生成整个字符串。

代码如下:

代码语言:javascript
复制
public String toString() {
    if (top == null) {
        return "Empty Stack";
    }

    List<String> elements = new ArrayList<>();
    elements.add("top");
    for (LLNode<T> node = top; node != null; node = node.getLink()) {
        elements.add(String.valueOf(node.getInfo()));
    }
    elements.add("bottom");

    elements.reverse();
    return String.join("|", elements);
}

我没有测试上面的代码,但我相信它可以工作。好消息是你已经有了可用的测试。

在教育环境中,上面的代码可能是不可接受的。这是因为List在概念上比Stack更复杂。因此,这个列表可能还没有在课堂上讲到。通常,主题是通过不断增加的复杂性来覆盖的,因此列表可能使用Stack,但不是反过来。但在实际编程中,上面的代码应该没问题。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54719337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档