交换 LinkedBag 中的三个元素。即 ABC==BCA

Swap three elements in LinkedBag. i.e. ABC==BCA

我正在尝试编写一种方法来交换 LinkedBag 中的前 3 个元素,如果成功,return 为 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

temp2node1 都是指向 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)

你不能只用指针交换数据,你需要一个临时对象来保存数据。 或者您更改链接并保留数据。