队列-Queue

基本概念

队列和栈类似,不同的是,先进队列的元素,最先从队列出去。

实现

通过链表实现队列

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
interface InterfaceQueue {
void push(int val);
int pop();
int top();
}

class Node {
public int val;
public Node next, prev;
public Node(int val) {
this.val = val;
this.next = null;
this.prev = null;
}
}

public class MyQueue implements InterfaceQueue{
public Node first, last;
public MyQueue() {
first = null;
last = null;
}
@Override
public void push(int val) {
if (last == null) {
last = new Node(val);
first = last;
} else {
Node node = new Node(val);
last.next = node;
node.prev = last;
last = last.next;
}
}
@Override
public int pop() {
if (first == null) {
return -1;
} else {
int res = first.val;
first = first.next;
if (first == null) {
last = null;
} else {
first.prev = null;
}
return res;
}
}
@Override
public int top() {
if (first == null) {
return -1;
} else {
return first.val;
}
}
}

Java中的队列

Java中,队列是一个接口,一般通过LinkedList实现。

1
2
3
4
Queue<Integer> q = new LinkedList<>();
q.offer(); // 入队
q.poll(); // 出队,并返回该元素
q.peek(); // 返回队列头元素,但不弹出

Lintcode 相关练习

Binary Tree Level Order Traversal
Implement Queue by Two Stacks
Animal Shelter