问题描述
如何在Java中设计一种有效的方法来删除堆栈中的下半部元素?例如: 我的堆栈是:(1,2,3,4,5,6)。输出为4,6。另一个输入为(1,6,7,8,9,10,11)的示例。输出为6到11。
解决方法
如果堆栈中有元素数量,则可以弹出前一半然后打印下一半(如果您不想丢失元素,则将其推入另一个堆栈中)
如果堆栈中没有元素数,则需要创建另一个堆栈(例如stack2),从stack1中弹出元素并压入stack2,然后保留元素数。
一旦获得计数,就从stack2中弹出元素并推入stack1中,只打印从stack2中弹出的前一半元素。
,您可以这样做:
int center = stack1.size() / 2;
//Remove the half
int counter = 0;
for(int i=0; counter<center;counter++) {
stack1.remove(i);
}