![](/img/trans.png)
[英]Java - I was modifying a stack linked list into a queue linked list but my dequeue method still behaves like pop
[英]POP method linked list
我在Java中实现了一个pop方法,我将它用于分隔符匹配,尽管它在列表中留下了一个元素。
public int length(){
Node current = this.head;
int length = 0;
while(current != null){
current = current.getNextNode();
length += 1;
}
return length;
}
public char pop(){
Node current = this.head;
Node lastN = this.last;
for(int i = 0; i < length() - 2; i++){
current = current.getNextNode();
}
current.setNextNode(null);
this.last = current;
return lastN.getBracket();
}
如果长度> = 1,我如何弹出第一个元素?或者任何改进我的代码的建议。
使用java.util.LinkedList。
使用addFirst()
, addLast()
, size()
, removeFirst()
和removeLast()
您将获得覆盖。
或者,以另一种方式检查此分隔符检查示例 。
在你的代码中,你会错过“初始”或“最后一个元素”的情况,这是特殊的。 你应该检查this.head == this.last
的情况; 应该返回最后一个元素并清理列表的情况。
为什么要在循环中移动列表元素? 怎么样而不是:
if (this.head != null)
{
char val = this.head.getBracket();
this.head = this.head.getNextNode();
}
此片段将删除第一个元素并将头部设置为指向第二个元素。 我猜JVM会删除旧head
。 如果列表是循环的,那么也将last
设置为指向新头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.