【发布时间】:2020-07-03 09:21:30
【问题描述】:
我这里有使用两个队列 q1 和 q2 实现堆栈的 push 方法。
void push(int a)
{
q2.add(a);
while(!q1.isEmpty()){
q2.add(q1.remove());
}
Queue<Integer> tmpq=q2;
q1=tmpq;
while(!q2.isEmpty()){
q2.remove();
}
}
主要思想是将 q1 替换为 q2。令人惊讶的是,这不起作用,因为当运行最后一个清空 q2 的 while 循环时,它也会使 tmpq 和 q1(现在已替换为 tmpq)队列为空。
但是当我进行以下更改时,它运行良好:
void push(int a)
{
q2.add(a);
while(!q1.isEmpty()){
q2.add(q1.remove());
}
Queue<Integer> tmpq=q2;
q2=q1;
q1=tmpq;
}
队列 tmpq 是否通过引用传递 q2,因为它不是原始数据类型,所以对 q2 进行任何更改都会影响 tmpq 相似性?
【问题讨论】:
标签: java data-structures reference queue pass-by-reference