Как я могу преобразовать этот кусок кода в цикл? - PullRequest
0 голосов
/ 09 апреля 2019

Как я могу преобразовать этот код в цикл?Я определил 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 ]

1 голос
/ 09 апреля 2019

Вы можете создать массив и затем выполнить его в обратном порядке.Что-то вроде

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());
}
0 голосов
/ 09 апреля 2019

Вы можете использовать следующий метод, чтобы получить список узлов. Вам нужно отправить верхний узел в метод, и он вернет список узлов. Этот метод написан, чтобы удостовериться в точной логике, которую вы упомянули, а именно: добавить верхний узел к нижнему и дочерние узлы к верхнему.

   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;
    }
0 голосов
/ 09 апреля 2019

Решение с использованием рекурсии.

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...