-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDeque.java
73 lines (65 loc) · 1.4 KB
/
Deque.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.ds_algo.e_queue;
import com.ds_algo.e_queue.list.LinkedList;
import com.ds_algo.e_queue.list.List;
/**
* 双端队列( double end queue):能在头尾两端添加删除的队列。每一端都像是一个单独的队列.
* 两端都可以入队和出队。
*
* @param <T>
*/
@SuppressWarnings("unused")
public class Deque<T> {
/**
* 双向链表
*/
private final List<T> list = new LinkedList<>();
public int size() {
return list.size();
}
public boolean isEmpty() {
return list.isEmpty();
}
/**
* 从尾部入队列
* @param element 尾部
*/
public void enQueueRear(T element) {
// 添加到链表的尾部 add(size()-1,element)
list.add(element);
}
/**
* 从头出队列
*/
public T deQueueFront() {
return list.remove(0);
}
/**
* 从头部入队列
* @param element 元素
*/
public void enQueueFront(T element) {
// 添加到链表的头部
list.add(0,element);
}
/**
* 从尾部出队列
* @return 尾部
*/
public T deQueueRear() {
return list.remove(list.size()-1);
}
/**
* 头部
* @return 头部
*/
public T front() {
return list.get(0);
}
/**
* 尾部
* @return 尾部
*/
public T rear() {
return list.get(list.size()-1);
}
}