Java 交换LinkedBag中的三个元素。i、 e.ABC==BCA

Java 交换LinkedBag中的三个元素。i、 e.ABC==BCA,java,nodes,swap,Java,Nodes,Swap,我正在尝试编写一个方法,该方法将交换LinkedBag中的前3个元素,如果成功,则返回true。如果原始行李为“1,2,3,4”,则交换的行李应为“2,3,1,4”。正如你所看到的,我的输出是不正确的,我觉得卡住了。任何帮助或解决方案都将不胜感激。提前谢谢你 public boolean swap123() { if (this.getCurrentSize() < 3) return false; else { Node node1 =

我正在尝试编写一个方法,该方法将交换LinkedBag中的前3个元素,如果成功,则返回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;
    }
}
public boolean swap123(){
if(this.getCurrentSize()<3)
返回false;
否则{
节点node1=第一个节点;
Node node2=firstNode.next;
Node node3=firstNode.next.next;
节点温度=节点3;
节点temp2=第一个节点;
node1.data=node2.data;
node2.data=临时数据;
node3.data=temp2.data;
返回true;
}
}
原始试验袋:1、2、3
预期产量:2,3,1

实际输出:2,3,2

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)
不能仅用指针交换数据,需要一个临时对象来保存数据。 或者更改链接并保留数据