目标是开发一个java程序,以高效的方式为下面的所有6种方法实现Dqueue。我必须将java.util.LinkedList扩展为Dqueue并实现以下所有方法。
public void enqueHead(E element),
public void enqueTail(E element)
public E dequeHead()
public E dequeTail()
public E peekHead()返回Head的元素但不删除它。
public E peekTail()返回尾部的元素但不删除它。
我提出了以下代码:
import java.util.LinkedList;
public class Dqueue<E> extends LinkedList<E> {
public void enqueHead(E element) {
if (isEmpty()) {
add(element);
return;
}
add(0, element);
}
public void enqueTail(E element) {
add(element);
}
public E dequeHead() {
if (isEmpty()) {
return null;
}
return remove(0);
}
public E dequeTail() {
if (isEmpty()) {
return null;
}
return remove(size() - 1);
}
public E peekHead() {
if (isEmpty()) {
return null;
}
return get(0);
}
public E peekTail() {
if (isEmpty()) {
return null;
}
return get(size() - 1);
}
}
我知道双端队列很像队列,除了可以在队列的两端完成排队(添加)和去队列(删除)的操作。在传统队列中,enque操作在尾部完成,deque在尾部完成,但在Dqueue中,这两个操作在两端都是允许的。我唯一的问题是我是否正确地这样做了?因为感觉有点太简单了。