我已经用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();
}
如果长度为&gt; = 1?,或者有任何改进我的代码的建议,如何弹出第一个元素。
答案 0 :(得分:0)
使用java.util.LinkedList。
通过addFirst()
,addLast()
,size()
,removeFirst()
和removeLast()
,您可以获得保障。
或者,请以另一种方式检查此delimiter check example。
在您的代码中,您会错过&#34;首字母&#34;或者&#34;最后一个元素&#34;案件,这是特别的。你应该检查this.head == this.last
的情况;你应该返回最后一个元素并清理列表的情况。
答案 1 :(得分:0)
为什么要遍历循环中的列表元素?怎么样而不是那个:
if (this.head != null)
{
char val = this.head.getBracket();
this.head = this.head.getNextNode();
}
此代码段将删除第一个元素并将头部设置为指向第二个元素。我猜JVM会删除旧的head
。如果列表是循环的,那么还要将last
设置为指向新的头部。