Java在堆栈之间移动数字
我有一个问题,关于在Java中使用堆栈 假设我有三层Java在堆栈之间移动数字,java,stack,Java,Stack,我有一个问题,关于在Java中使用堆栈 假设我有三层 Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); Stack<Integer> stack3 = new Stack<Integer>(); stack1.push(10); stack1.push(5); stack1.push(25)
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
Stack<Integer> stack3 = new Stack<Integer>();
stack1.push(10);
stack1.push(5);
stack1.push(25);
stack1.push(2);
stack1.push(100);
Stack stack1=新堆栈();
Stack stack2=新堆栈();
Stack stack3=新堆栈();
堆栈1.推送(10);
堆栈1.推送(5);
堆栈1.推送(25);
堆栈1.推送(2);
堆栈1.推送(100);
我希望这些数字在stack3中按从高到低的顺序排列。
stack3喜欢100,25,10,5,2
在堆栈之间移动数字的最佳方法是什么?由于Java中的一些错误设计决策,可以创建
集合。排序(stack1)
,然后简单地从第一个堆栈中弹出并推入第二个堆栈
但请注意,由于Java 6,因此最好使用ArrayDeque
(或另一个Deque
)而不是Stack
。如果堆栈不是列表
,则顺序为:
列表中或数组中)
Collections.Sort(..)
或Arrays.Sort(..)
)但这些都是java“黑客”。如果这是一个家庭作业问题,他们更可能希望您实现类似smas所指出的“河内塔”问题。由于Java中的一些错误设计决策,可以进行
集合。排序(stack1)
,然后简单地从第一个堆栈中弹出并推入第二个堆栈
但请注意,由于Java 6,因此最好使用ArrayDeque
(或另一个Deque
)而不是Stack
。如果堆栈不是列表
,则顺序为:
列表中或数组中)
Collections.Sort(..)
或Arrays.Sort(..)
)但这些都是java“黑客”。如果这是一个家庭作业问题,他们更可能希望你实施类似smas所指出的“河内塔”问题。重复波佐的回答:
Stack<Integer> stack3 = new Stack<Integer>();
Integer[] arr = stack.toArray(new Integer[stack.size()]);
Arrays.sort(arr);
stack3.addAll(Arrays.asList(arr));
Stack stack3=新堆栈();
整数[]arr=stack.toArray(新整数[stack.size()]);
数组。排序(arr);
stack3.addAll(Arrays.asList(arr));
重新表述波佐的回答:
Stack<Integer> stack3 = new Stack<Integer>();
Integer[] arr = stack.toArray(new Integer[stack.size()]);
Arrays.sort(arr);
stack3.addAll(Arrays.asList(arr));
Stack stack3=新堆栈();
整数[]arr=stack.toArray(新整数[stack.size()]);
数组。排序(arr);
stack3.addAll(Arrays.asList(arr));
此问题称为:河内塔问题,请尝试在wikipedia/google中查找此问题的代码/描述。此问题称为:河内塔问题,请尝试在wikipedia/google中查找此问题的代码/描述。是否只允许使用堆栈?你能临时储存吗?这些是你唯一关心的数字,还是你想要一个通用的解决方案?你只允许使用堆栈?你能临时储存吗?这些是你唯一关心的数字,还是你想要一个通用的解决方案?数字可以是任意数字,我可以使用临时堆栈。数字可以是任意数字,我可以使用临时堆栈。我故意不包含代码。这可能是一个家庭作业,学生们应该学会写代码:)我故意不写代码。这可能是一个家庭作业,学生应该学会写代码:)不,不是。在Hanoi问题中,任何堆栈的元素总是被排序的。在Billy的问题中,元素最初是未排序的,目标是仅使用堆栈对它们进行排序。我想元素最初未排序并不重要。同样的算法也会起作用不,它不是。在Hanoi问题中,任何堆栈的元素总是被排序的。在Billy的问题中,元素最初是未排序的,目标是仅使用堆栈对它们进行排序。我想元素最初未排序并不重要。同样的算法也适用