交换 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
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)
你不能只用指针交换数据,你需要一个临时对象来保存数据。
或者您更改链接并保留数据。
我正在尝试编写一种方法来交换 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
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)
你不能只用指针交换数据,你需要一个临时对象来保存数据。 或者您更改链接并保留数据。