如何将此代码转换为循环?我已将top定义为NodeString类型的实例变量
NodeString temp1 = top.getNext().getNext().getNext().getNext().getNext();
NodeString temp2 = top.getNext().getNext().getNext().getNext();
NodeString temp3 = top.getNext().getNext().getNext();
NodeString temp4 = top.getNext().getNext();
NodeString temp5 = top.getNext();
NodeString temp6 = top;
result.add(temp1.getData());
result.add(temp2.getData());
result.add(temp3.getData());
result.add(temp4.getData());
result.add(temp5.getData());
result.add(temp6.getData());
答案 0 :(得分:1)
您可以构建一个数组,然后向后迭代。像
NodeString[] arr = { top, arr[0].getNext(), arr[1].getNext(),
arr[3].getNext(), arr[4].getNext(), arr[5].getNext() };
for (int i = arr.length - 1; i >= 0; i--) {
result.add(arr[i].getData());
}
答案 1 :(得分:0)
使用递归的解决方案。
List func(NodeString top,List result){
if(top==null){
return result;
}else{
result = func(top.next,result);
result.add(top.data);
}
return result;
}
您还可以 func 这样调用:
List result = func(top, new ArrayList());
答案 2 :(得分:0)
您可以使用以下方法获取节点列表。您需要将顶部节点发送到该方法,它将返回节点列表。编写此方法是为了确保您提到的确切逻辑是将顶部节点添加到底部,将子节点添加到顶部。
private List<NodeString> generateNodeList(NodeString topNode) {
List<NodeString> result = new LinkedList<>();
NodeString currentNode = topNode;
while(currentNode != null) {
result.add(0, currentNode);
currentNode = currentNode.getData();
}
return result;
}