一:定义双端队列是一种具有队列和栈性质的数据结构即可在线性表的两端进行插入和删除等操作二:.Java API中的Deque知道了双端队列的定义下面我们来了解一下Java API中的Deque类知道双端队列是如何创建以及使用的双端队列的创建以及使用可以看到Deque类是一个接口实现一个接口我们要重写接口中的所有方法。但Deque同时也实现了LinkedList类因此创建Deque类我们可以newLinkedList类。三:代码实现知道了如何使用双端队列下面我们就来实现一下其中的各个方法吧。下面将基于链表实现基于链表双端队列的添加方法(头部,尾部)我们需要知道要插入位置的头节点以及尾节点因此使用双向环形链表实现要方便许多如图所示便为一个双向循环链表1.节点的创建创建一个双向循环链表节点我们需要一个指向前一个节点的指针(pre)以及指向后面节点的指针( next)2.双端队列的创建我们需要一个头部哨兵节点sentinel,方便我们获取队首元素(sentinel.next)以及队尾元素(sentinel. pre)3. addFirst 将指定元素插入此双端队列的开头思路:向队列头部添加元素首先我们需要获取哨兵节点sentinel以及头部节点( sentinel.next)再创建一个新节点更新对应的指针即可4. addLast 将指定元素插入此双端队列的尾部5. pollFirst 获取并移除此双端队列的第一个元素6.pollLast 获取并移除此双端队列的最后一个元素peekFirst 获取,但不移除此双端队列的第一个元素思路:直接返回队首元素( sentinel.next.val)peekLast 获取,但不移除此双端队列的最后一个元素思路:直接返回队尾元素( sentinel.pre.val)