我有一个带有 LinkedStack 反转方法的通用 LinkedStack 类它创建一个新的 LinkedStack 说 newLinkedstack 并通过弹出它们从当前堆栈中推送项目。因此,在操作结束时,当前堆栈为空,并且 newLinkedStack 包含与“this”堆栈中相同的项目/元素,只是以相反的顺序排列。
我的代码可以编译,但是当我创建并填充堆栈然后打印出内容时,我只得到一个结果。
public LinkedStack<T> rev()
{
LinkedStack<T> revStack=new LinkedStack<T>();
//final int SIZE=this.size();
while(!(this.empty)){//for(int i=0;i<SIZE;i++)
{
revStack.push(this.pop());
}
return revStack;
}
例如
LinkedStack<String> newLS = new LinkedStack<String>();
newLS.push("noid");
newLS.push("enilec");
newLS.push("River");
newLS.push("Healing");
newLS.push("Pain");
并newLS.rev()
返回Pain
而不是反向堆栈
更新
这是我的流行方法
public T pop()
{
T element=peek();
top=top.next;
return element;
}
我有两种推送方法,一种将每个元素从输入堆栈移动到当前堆栈,使输入堆栈从参数为空
public void push(LinkedStack<T> stack){
//int SZE = stack.size();
while(!(stack.empty())){//formally for(int i=0;i<SZE;i++){
this.push(stack.pop());}}
这是我的另一个推送方法
public void push(T element)
{
top=new Node<T>(item,top);
}