这是一个家庭作业。将以下递归深度复制方法更改为迭代等效方法。我走近了,需要你的帮助才能做到这一点。递归实现:
public static StringNode copy(StringNode str) {
if (str == null)
return null;
StringNode copyFirst = new StringNode(str.ch, null);
copyFirst.next = copy(str.next);
return copyFirst;
}
这是我想出的,迭代等价物。该static length()
方法已经实现返回给定链接列表中有多少节点。
public static StringNode copy(StringNode str) {
if (str == null)
return null;
StringNode firstNode = new StringNode(str.ch ,null);
StringNode prevNode = firstNode;
StringNode nextNode;
for (int i = 1; i < length(str); i++) {
nextNode = new StringNode(str.next.ch, null);
prevNode.next = nextNode;
prevNode = nextNode;
}
return firstNode;
}
str1
问题:为了测试我的实现,我创建了一个带有字符值的链表'n', 'b', 'a'
,然后调用
StringNode copy = StringNode.copy(str1);
然后我删除 str1 的最后一个节点,将其保留为'n','b',
但是,当我尝试打印出存储在副本中的内容时,我得到
'n', 'b', 'b'
的不是'n', 'b', 'a'
.
有什么建议么?