我们正在学习中级编程中的堆栈,我们正在使用 Practice-IT!用于编码示例。我被困在这个问题上:
“编写一个方法 splitStack ,它将一堆整数作为参数并将其拆分为负数和非负数。堆栈中的数字应该重新排列,以便所有负数都出现在底部堆栈的所有非负数都出现在顶部。换句话说,如果在调用此方法后要从堆栈中弹出数字,您将首先获取所有非负数,然后再获取所有负数。它只要所有负数在堆栈中的出现低于所有非负数,数字出现的顺序无关紧要。您可以使用单个队列作为辅助存储。
我尝试为它编写一些代码,但它说它是错误的。我不知道我哪里错了,因为我是第一次学习这个。
public Stack<Integer> splitStack(Stack<Integer> intSt)
{
Stack posSt = new Stack();
Stack negSt = new Stack();
for(int i = 0; i<intSt.size(); i++)
{
intSt.pop();
if (intSt.peek() < 0)
{
negSt.push(intSt);
}
else
{
posSt.push(intSt);
}
}
for(int i = 0; i<negSt.size(); i++)
{
negSt.pop();
intSt.push();
}
for(int i=0; i<posSt.size(); i++)
{
posSt.pop();
intSt.push();
}
return intSt;
}