双端队列

时间:2015-10-31 10:57:07

标签: java deque

目标是开发一个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 peekTai​​l()返回尾部的元素但不删除它。

我提出了以下代码:

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中,这两个操作在两端都是允许的。我唯一的问题是我是否正确地这样做了?因为感觉有点太简单了。

0 个答案:

没有答案