Поменяйте местами три элемента в LinkedBag.то есть ABC == BCA - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь написать метод, который поменяет первые 3 элемента в LinkedBag и вернет true в случае успеха.Если исходная сумка имеет значение «1,2,3,4», то заменяемая сумка должна быть «2, 3, 1, 4».Как видите, мой вывод неверен, и я чувствую себя застрявшим.Любая помощь или решения будут высоко оценены.Заранее спасибо!

public boolean swap123() {

    if (this.getCurrentSize() < 3)
        return false;
    else {
        Node node1 = firstNode;
        Node node2 = firstNode.next;
        Node node3 = firstNode.next.next;
        Node temp = node3;
        Node temp2 = firstNode;


        node1.data = node2.data;

        node2.data = temp.data;

        node3.data = temp2.data;


        return true;
    }
}

Оригинальная тестовая сумка: 1, 2, 3
Ожидаемый результат: 2, 3, 1
Фактический результат: 2, 3, 2

1 Ответ

0 голосов
/ 04 октября 2018

temp2 и node1 являются указателями на firstnode

node1.data = node2.data; //sets the data of firstnode to the data of node2

node3.data = temp2.data; // sets the data of node 3 to the data of firstnode( which has become 2)

Вы не можете поменять данные только указателями, вам нужен временный объект для хранения данных.Или вы меняете связь и сохраняете данные.

...