toString方法,用于链表以使用普通列表和循环列表

时间:2017-11-28 11:38:47

标签: java

我目前正在学习链接列表。我目前有一个toString方法,只适用于普通列表,但我想得到它,所以它适用于普通列表和循环列表。请问您能否提供一些我可以这样做的信息。 非常感谢

public String toString(){
    String str = "";
    Node current = head;
    while(current != null){
        str = str + current.getItem();
        current = current.next();
        if (current != null){
            str = str + ", ";
        }
    }
    return str;
}

1 个答案:

答案 0 :(得分:0)

在循环列表中,最后一个节点指向第一个节点。这意味着对于循环列表,如果第二次到达头节点,则需要停止循环。这是使用do-while循环的绝佳机会。在普通链表的情况下,next将包含null,因此我们可以通过具有双重结束条件使其适用于两种类型:如果它为null或者它是头节点。

(注意:我假设如果列表为空,则head包含null)

public String toString(){
    String str = "";
    if (head != null){
        Node current = head;
        do {
            str = str + current.getItem();
            current = current.next();
            if (current != head && current != null){
                str = str + ", ";
            }
        } while(current != head && current != null);
    }
    return str;
}

另请注意,我保留了没有尾随逗号的逻辑。我个人觉得只是添加逗号总是更清晰,并使用子字符串修剪循环后的尾随逗号。