我如何将这段代码转换为循环?

时间:2019-04-09 02:11:26

标签: java linked-list

如何将此代码转换为循环?我已将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());

3 个答案:

答案 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;
    }