赞
踩
双端队列(Deque)是指允许两端都可以进行入和出队操作的队列,deque 是 “double ended queue” 的简称。那就说明元素可以从队头出队和入队,也可以从队尾出队和入队。
双端队列(Deque)既可说是Queue的子接口,也可说Stack(JDK并未提供这个接口)的子接口。因此。Deque即可当成队列使用,也可当成栈使用。
由此可见,Deque其实就是Queue和Stack混合而成的一种特殊的线性表,完全可以参考起前面的Queue,Stack的实现类实现Deque。
队头入队:
如果一个排在队头的顾客进了餐厅却发现暂无空桌,则其再次回到队头的行为就相当于从队头入队操作。
队尾出队:
如果一个排在队尾的顾客嫌队伍太长离开了队伍,则其行为就相当于从队尾出队操作。
用linkedlist创建对象:
private LinkedList<T> deque =new LinkedList<>();
队头的插入:
//队头插入数据
public void Ladd(T insert) {
deque.add(insert);
}
队尾的插入:
//队尾插入数据
public void Fadd(T insert) {
deque.add(0,insert);
}
队头的删除:
//删除队头的数据
public void Fremove() {
deque.remove(0);
}
队尾的删除:
//删除队尾的数据
public void Lremove() {
deque.remove(deque.size()-1);
}
查看数据:
//查看数据
public LinkedList Search() {
return deque;
}
完整代码:
public class Deque<T> { private LinkedList<T> deque =new LinkedList<>(); //队头插入数据 public void Ladd(T insert) { deque.add(insert); } //队尾插入数据 public void Fadd(T insert) { deque.add(0,insert); } //删除队头的数据 public void Fremove() { deque.remove(0); } //删除队尾的数据 public void Lremove() { deque.remove(deque.size()-1); } //查看数据 public LinkedList Search() { return deque; } }
main方法:
public static void main(String[] args) {
Deque deque = new Deque();
deque.Fadd("123");
deque.Fadd("432");
deque.Fadd("asd");
deque.Fadd("544");
deque.Ladd("0");
System.out.println(deque.Search());
deque.Fremove();
System.out.println(deque.Search());
deque.Lremove();
System.out.println(deque.Search());
}
输出结果:
参考:
https://jishuin.proginn.com/p/763bfbd5f328
参考:
https://www.jianshu.com/p/1105be94c762
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。