我目前正在学习链接列表。我目前有一个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;
}
答案 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;
}
另请注意,我保留了没有尾随逗号的逻辑。我个人觉得只是添加逗号总是更清晰,并使用子字符串修剪循环后的尾随逗号。